Function urlStrim(cTxt)
Dim objRegExp
Set objRegExp = New RegExp
objRegExp.Pattern = "\[(.*?)\]"
objRegExp.IgnoreCase = True
objRegExp.Global = True
urlStrim = objRegExp.Replace(cTxt,"<a href=$1>$1</a>")
Set objRegExp = Nothing
End Function
Jädrigt bra fråga.
Eftersom du vill köra server.urlencode() på $1, men gör du det så ersätts ju $1 också, och därmed försvinner ju den parametern och regexp förstår inte vad det är för något.
Man skulle kanske på något sätt kunna få fram matchningar som bara hittar det inom <a href="blabla">, men det vet jag inte hur man gör.
Function urlStrim(cTxt)
Dim objRegExp,strTxt
strTxt=cTxt
Set objRegExp = New RegExp
objRegExp.Pattern = "\[(.*?)\]"
objRegExp.IgnoreCase = True
objRegExp.Global = True
for each objMatch in objRegExp.Execute(strTxt)
strTxt = Replace(strTxt,objMatch.Value,"<a href=""" & server.urlencode(objMatch.Submatches(0)) & """>" & objMatch.Submatches(0) & "</a>")
next
Set objRegExp = Nothing
urlStrim=strTxt
End Function
------------------
/emission If you see someone without a smiley, give them your colon.
submatches... självklart när man ser det, men inte lätt om man inte sett det tidigare :)
Men nu när man läser VBscript dokumentationen lite tydligare hittar man självklart detta:
Matches pattern and captures the match. The captured match can be retrieved from the resulting Matches collection, using the SubMatches collection in VBScript or the $0…$9 properties in JScript. To match parentheses characters ( ), use '\(' or '\)'.