Avatar billede larsbachmanndk Nybegynder
30. maj 2006 - 13:27 Der er 5 kommentarer og
1 løsning

Marker søgeordet i teksten

Jeg har lavet en funktion der marker et given ord, når man søger på det:

strReplace = Replace("" & strT & "", "" & strS & "","<b><font color=""red"">" & strS & "</font></b>")

men problemet er at der også er sat billeder ind, så hvis man søger på "gif", og der er indsat et gif billede, fucker den op i koden, da den jo erstatter følgende tekst:

<img src="billede.gif">

med

<img src="billede.<b><font color="red">gif</font></b>">

Hvordan løser jeg det?
Avatar billede ldanielsen Nybegynder
30. maj 2006 - 13:53 #1
Her er et bud. Det skal testes grundigt, for hvad der sker hvis der er < og > uregelmæssige steder:

<%

strTekst = "<img src=""billede.gif"">gif"

strTekst = HighlightIt(strTekst, "gif")

Response.Write(strTekst)


Function HighlightIt(strInput, strFind)
    if InStr(1, strInput, "<") then
        arrAll = Split(strInput, "<")
        strSep = ""
        for i = 0 to Ubound(arrAll)
            if InStr(1, arrAll(i), ">") then
                arrTemp = Split(arrAll(i), ">")
                HighlightIt = HighlightIt & strSep & arrTemp(0) & ">" & Replace(arrTemp(1), strFind, "<b><font color=""red"">" & strFind & "</font></b>")
            else
                HighlightIt = HighlightIt & strSep & arrAll(i)
            end if
            strSep = "<"
        next
        HighlightIt = Replace(HighlightIt, "<>", "")
    else
        HighlightIt = strInput
    end if
end Function

%>
Avatar billede larsbachmanndk Nybegynder
30. maj 2006 - 14:05 #2
Det ser meget fornuftigt ud, men hvordan får jeg den integreret i min kode?

Dim strS, strT
If Request.QueryString("search") <> "" Then
strS = Request.QueryString("search")
End If
strT = rsAlleMembers("diverse")
strReplace = Replace("" & strT & "", "" & strS & "","<b><font style=""background-color: #FF0000"" color=""#FFFFFF"">" & strS & "</font></b>")
Avatar billede fennec Nybegynder
30. maj 2006 - 14:25 #3
Jeg vil sige du skal over i "regular expresions" i stedet. Prøv at tage et kik i den kategori. Evt stille ?'et derinde:
http://www.eksperten.dk/spm/Programmering/RegExp/

Denne opgave er dog lide mere advanceret end mine RegExp evner rækker til :o)
Avatar billede ldanielsen Nybegynder
30. maj 2006 - 16:32 #4
Dim strS, strT
If Request.QueryString("search") <> "" Then
strS = Request.QueryString("search")
End If
strT = rsAlleMembers("diverse")
strReplace = HighlightIt(strT, strS)



Function HighlightIt(strInput, strFind)
    if InStr(1, strInput, "<") then
        arrAll = Split(strInput, "<")
        strSep = ""
        for i = 0 to Ubound(arrAll)
            if InStr(1, arrAll(i), ">") then
                arrTemp = Split(arrAll(i), ">")
                HighlightIt = HighlightIt & strSep & arrTemp(0) & ">" & Replace(arrTemp(1), strFind, "<b><font color=""red"">" & strFind & "</font></b>")
            else
                HighlightIt = HighlightIt & strSep & arrAll(i)
            end if
            strSep = "<"
        next
        HighlightIt = Replace(HighlightIt, "<>", "")
    else
        HighlightIt = strInput
    end if
end Function


MEN der bliver et problem med store og små bogstaver, hvis du søger efter Hej, så vil hej blive ersteattet med Hej.

Der kan laves mere ved det, men jeg har ikke tid nu

RegExp lyder som en god ide, det vil også kræver MEGET færre resourcer. Jeg kan bare ikke klare det.
Avatar billede larsbachmanndk Nybegynder
31. maj 2006 - 09:58 #5
Takker, det er alletiders, det er fint til det jeg skal bruge det til.
Du får point
Avatar billede ldanielsen Nybegynder
31. maj 2006 - 10:05 #6
Tak
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