在经典 ASP(VB 脚本)中,我需要通过对当前 url 进行编码并在其前面挂起来修改字符串中包含的多个不同的 href。
基本上,我想让所有的 href 都通过我的redirect.asp,并将现有的 href 编码传递到新链接中。
例如:
现存的:
<a href="http://www.dairyqueen.com/us-en/Promotions-US/?localechange=1&test=1">
期望的结果:
<a href="/redirect.asp?id=123&url=http%3A%2F%2Fwww.dairyqueen.com%2Fus-en%2FPromotions-US%2F%3Flocalechange%3D1%26test%3D1">
请注意,字符串中包含多个不同的 href。所有这些都需要更换。
此外,我还想在 href 中添加额外的属性,我可能只需使用replace(myString,"<a href","<a target=""_blank"" href=")
除非有更好的办法。
最佳结果:
<a target="_blank" href="/redirect.asp?id=123&url=http%3A%2F%2Fwww.dairyqueen.com%2Fus-en%2FPromotions-US%2F%3Flocalechange%3D1%26test%3D1">
看一下下面的代码:
' <a href="http://www.dairyqueen.com/us-en/Promotions-US/?localechange=1&test=1">
sHtml = "<a href=""http://www.dairyqueen.com/us-en/Promotions-US/?localechange=1&test=1"">"
Set refRepl = GetRef("fnRepl")
With CreateObject("VBScript.RegExp")
.Global = True
.MultiLine = True
.IgnoreCase = True
.Pattern = "<a([\s\S]*?)href=""([\s\S]*?)""([\s\S]*?)>"
sResult = .Replace(sHtml, refRepl)
End With
' <a target="_blank" href="/redirect.asp?id=123&url=http%3A%2F%2Fwww.dairyqueen.com%2Fus-en%2FPromotions-US%2F%3Flocalechange%3D1%26test%3D1">
MsgBox sResult
Function fnRepl(sMatch, sSubMatch1, sSubMatch2, sSubMatch3, lPos, sSource)
fnRepl = "<a" & sSubMatch1 & "target=""_blank"" href=""/redirect.asp?id=123&url=" & EncodeUriComponent(sSubMatch2) & """" & sSubMatch3 & ">"
End Function
Function EncodeUriComponent(sText)
With CreateObject("htmlfile")
.ParentWindow.ExecScript (";")
EncodeUriComponent = .ParentWindow.EncodeUriComponent(sText)
End With
End Function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)