Jens Gyldenkærne Clausen skrev:
> [
http://www.notestips.com/80256B3A007F2692/1/NAMO5RNV2S#17 ]
>
> - den bruger javascript regex, men tager netop højde for
> problemet med attributter. Den bør kunne omskrives til
> vbscript/regex, men ellers kan du jo bruge den som den er.
Nu blev jeg nysgerrig - og endte med selv at omskrive den til asp-
kode. Funktionen herunder virker som ønsket. Bemærk at man godt kan
søge på flere ord ad gangen (de skal så adskilles med |):
Function markWord(S, aWords)
' Extract HTML Tags
Dim re, vstrippedHTML, i, MatchArr, vTemp
Set re = New RegExp
re.Pattern = "<[^<>]*>"
re.IgnoreCase = True
re.Global = True
' Replace HTML tags
Set MatchArr = re.Execute(S)
vStrippedHTML = re.replace(S,"$!$")
' alert(vStrippedHTML);
' Replace search words
Dim re2
set re2 = New RegExp
re2.Pattern = "(" + aWords + ")"
re2.IgnoreCase = True
re2.Global = True
vTemp = re2.replace(vStrippedHTML,"<em
class=""highlight"">$1</em>")
' Reinsert HTML
For i = 0 To MatchArr.Count -1
vTemp = Replace(vtemp, "$!$", MatchArr(i),1,1)
Next
markWord = vTemp
End function
Teknikken er at fjerne alle html-elementer (incl. attributter) fra
strengen før man fremhæver søgeordene. Til sidst sættes html-
elementerne så ind igen. De to sidste argumenter til Replace-linjen
sikrer at vi kun erstatter én forekomst af $!$ ad gangen.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på
http://usenet.dk/netikette/citatteknik.html