Avatar billede daniel_d Nybegynder
27. oktober 2002 - 16:16 Der er 2 kommentarer og
1 løsning

Highlight af flere forskellige søgeord ?

Jeg bruger et script til at highlighte mine søgeord med en gul baggrund. Jeg er glad for scriptet idet det ikke er case sentativ, som flere andre scripts er.

Ved godt det kan laves lettere med Regular Exp. men kan ikke selv finde ud af det. Scriptet virker fint med et søgeord, men søger jeg på flere ord bliver kun det sidste søgeord markeret.

Jeg kan ikke lige se hvorfor. Kan nogen af jer det ?


strengen der holder mine søgeord hedder "curWord"

Her er koden jeg bruger til udskrivning af resultatet:

If Not (rs.BOF Or rs.EOF) Then
    ' Hvis der er fundet poster på søgningen
    Response.Write "<p>Søgeresultat</p>"
    Response.Write "<table border=0>"

    Do While Not rs.EOF
   
    databasetekst = RegReplace(rs("article"))
   
    FindStrKeyword = instr(databasetekst, curWord)
    hvorersoegeord = (FindStrKeyword-0)
      if hvorersoegeord < 1 Then
        hvorersoegeord = 1
      End If   

    strOutput = Mid(databasetekst, HvorErSoegeord , (Len(curWord)+200))
   
    'formaterer strengen med highlight af søgeord + ... ved slut
    strOutput = strOutput + "<b>...</b>"
    strOutput = Highlight(strOutput, curWord, "<Span style='\background-color:#FFFF00;\'>", "</Span>")
   
    'Her udskriver vi vores søgeresultat
    Response.Write "<tr><td style='\border-bottom: 1 dotted #000000'\><b>" & rs("Title") & "</b></td></tr>"
    Response.Write "<tr><td>" & strOutput & "</td></tr>"
    Response.Write "<tr><td><a href=""index.asp?id=" & rs("id") & """( target=""_parent"">Link til siden</a></td></tr>"
   
    rs.MoveNext
    Loop
   
    Response.Write "</table>"


...................................................... og Her er highlightfunktionen:

Function Highlight(strText, strFind, strBefore, strAfter)

' Parameters:
' strText     - string to search in
' strFind    - string to look for
' strBefore    - string to insert before the strFind
' strAfter     - string to insert after the strFind

    Dim nPos
    Dim nLen
    Dim nLenAll
   
    nLen = Len(strFind)
    nLenAll = nLen + Len(strBefore) + Len(strAfter) + 1

    Highlight = strText

    If nLen > 0 And Len(Highlight) > 0 Then
        nPos = InStr(1, Highlight, strFind, 1)
        Do While nPos > 0
            Highlight = Left(Highlight, nPos - 1) & _
                strBefore & Mid(Highlight, nPos, nLen) & strAfter & _
                Mid(Highlight, nPos + nLen)

            nPos = InStr(nPos + nLenAll, Highlight, strFind, 1)
        Loop
    End If
End Function
Avatar billede daniel_d Nybegynder
27. oktober 2002 - 16:17 #1
highlightfunktionen ligger i en includefil sammen med de andre funktionen som kaldes i forbindelse med søgningen...
Avatar billede hossein Nybegynder
27. oktober 2002 - 21:44 #2
Avatar billede daniel_d Nybegynder
04. januar 2003 - 01:04 #3
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