Avatar billede lklingenberg Nybegynder
13. december 2004 - 11:54 Der er 1 kommentar og
1 løsning

Modificering af regexp replace funktion

Hi E,

Følgende funktion anvender jeg til markering af søgeord:

Function findSoegeord(sTekstDerSoegesI)
   
  Dim oRegExp
  Dim oArray
  Dim sNyTekst
       
  Set oRegExp = New RegExp
  oRegExp.IgnoreCase    = True
  oRegExp.Global        = True
       
  sNyTekst = sTekstDerSoegesI
       
  If IsArray(Session("SearchArray")) Then
    For Each oArray In Session("SearchArray")
      oRegExp.Pattern    = "(" & oArray & ")"
      sNyTekst = oRegExp.Replace(sNyTekst, "<span style=""background-color: yellow"" title=""Markering kan fjernes ved klik på 'FJERN' til højre for søgeknappen"">$1</span>")
    Next
  End If

  findSoegeord = sNyTekst
       
  Set oRegExp = Nothing
       
End Function

Funktionen fungerer dog lidt for godt. Den erstatter helt ukritisk og altså også ord som fx indgår i en alt tekst til et billede eller en title tekst til et givent html element. Desuden erstatter den også & i html kodede karakterer (fx &oslash; og &quot;).

Er der nogen der kan hjælpe mig med at modificere funktionen, så den ikke erstatter tekst i html attributter og tegn i html kodede karakterer. Sidstnævnte kunne måske gøres med et andet regexp udtryk (noget i retningen af (\&\.+\;). Førstnævnte kan jeg ikke live greje hvordan man kunne ordne.
Avatar billede lklingenberg Nybegynder
13. december 2004 - 11:57 #1
hov, der sneg sig vist et \ for meget ind i regexp udtrykket for html kodede karakterer:
(\&.+\;). Da der kan forekomme # i koden er \w vist ikke tilstrækkeligt, eller hvad?
Avatar billede lklingenberg Nybegynder
04. marts 2005 - 16:39 #2
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester