Avatar billede mortency Nybegynder
30. oktober 2003 - 16:02 Der er 3 kommentarer og
2 løsninger

Highlighte function og fjerne html

Jeg skal lage en function som higlighter de ord som det søkes på.

Jeg har funnet en som highlighter men den krever veldig mye og alt går veeeeeeeeeeeldig tregt.

Er det noen som vet hvordan jeg kan optimalisere den samt få den til å bli en function som kan kalles opp?

Koden er slik:

    <%
    'Highlight start
    strSearchWithin = "Dette er en test av highlight tekst!!!!"
    strSearchFor= "Dette, av, tekst!"
    'replace(Request.QueryString("q")," ",",")
   
    Response.Write"FØR: " & strSearchWithin & "<br><br>"

    strAr = split(strSearchFor, ",")

    For j = 0 To UBound(strAr)
        strAr(j) = trim(strAr(j))
    next
    pos = 1
    FndPos = 1
    For j = 0 To UBound(strAr)
        FndPos = instr(1, strSearchWithin, strAr(j),1)
        Do While FndPos<>0
            str = Mid(strSearchWithin, 1, (FndPos-1)+len(strAr(j)))
            newstr = Mid(str, 1, FndPos - 1) & "<font color=#000000 class=highlightserarch><B><i>" & Mid(str, FndPos, len(strAr(j))) & "</i></B></font>"
            strSearchWithin = replace(strSearchWithin, str, newstr)
            pos = FndPos+len(strAr(j)) + 3
            FndPos = instr(pos, strSearchWithin, strAr(j),1)
        Loop
    next
    'Highlight end
   
    Response.Write"Etter: " & strSearchWithin
    %>

Fjerne html med Server.HTMLEncode men at html koden ikke skal vises. Hvordan gjør jeg det?
Avatar billede Slettet bruger
30. oktober 2003 - 16:32 #1
Jeg bruger denne funktion til at fjerne html med

'################### Fjerner HTML fra en streng
Function RemoveHTML(strSource)
Do
  pos = 1
  tmpBegin = inStr(pos,strSource,"<")
  If tmpBegin > 0 Then
    pos = tmpBegin
    If LCase(mid(strSource,tmpBegin,7)) = "<script" Then
      tmpEnd = Instr(tmpBegin,LCase(strSource),"</script>")
      strSource = Left(strSource,tmpBegin-1) & Right(strSource,Len(strSource)-tmpEnd-8)
    ElseIf Lcase(mid(strSource,tmpBegin,2)) = Chr(60) & "%" Then
      tmpEnd = Instr(tmpBegin,Lcase(strSource),"%" & Chr(62))
      strSource = Left(strSource,tmpBegin-1) & Right(strSource,Len(strSource)-tmpEnd-3)
    Else
      tmpEnd = InStr(pos,strSource,">")
      If tmpEnd > 0 Then
        strSource = Left(strSource,tmpBegin-1) & Right(strSource,Len(strSource)-tmpEnd)
      Else
        strSource = Left(strSource,tmpBegin-1)
    Exit Do
    End If
  End If
  Else
  Exit Do
  End If
Loop
RemoveHTML = strSource
End Function
Avatar billede eagleeye Praktikant
30. oktober 2003 - 19:50 #2
Angående den funktion du har lavet kan du overveje at bruger Regular Expression til at finde ord og highligte dem.

Eks på koden så:

<%
str = "Dette er en test av highlight tekst!!!!"
strSearchFor = "Dette|av|tekst"

Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = true
regEx.Pattern = "(" & strSearchFor  & ")"
str = regEx.Replace (str,"<font color=#000000 class=highlightserarch><B><i>$1</i></B></font>")
Set regEx = Nothing

Response.Write str
%>


Jeg bruger denne funktion som kan ses på siden til at fjerne HTML koder:
http://www.eagleeye.dk/asp/removehtml/default.asp
Avatar billede mortency Nybegynder
31. oktober 2003 - 09:42 #3
//Eagleeye

Veldig bra! Hvordan får jeg highlight til å bli en function? Dette virker ikke!

<%
strInput = "Dette er en test av highlight tekst!!!!"
strKeywords = "Dette|av|tekst"

Function Highlight( strHighlight, strSearchFor )
    Set regEx = New RegExp
    regEx.Global = true
    regEx.IgnoreCase = true
    regEx.Pattern = "(" & strSearchFor  & ")"
    str = regEx.Replace (strHighlight,"<font color=#000000 class=highlightserarch><B><i>$1</i></B></font>")
    Set regEx = Nothing
End Function

Response.Write Highlight(strInput,strKeywords)
%>
Avatar billede eagleeye Praktikant
31. oktober 2003 - 16:41 #4
Du skal sådan set bare rette denne linje:

str = regEx.Replace (strHighlight,"<font color=#000000 class=highlightserarch><B><i>$1</i></B></font>")

Sådan der ikke står str men nanvet på funktionen Highlight sådan at strengen bliver ført tilbage til det sted den blev kaldt og dermed udskrves:

Highlight = regEx.Replace (strHighlight,"<font color=#000000 class=highlightserarch><B><i>$1</i></B></font>")
Avatar billede mortency Nybegynder
03. november 2003 - 09:07 #5
//Eagleeye

Nå virker det! Pointene er dine!
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

IT-JOB

Netcompany A/S

Network Engineer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Kryptokustode til opbygning af Forsvarets nye IT-platform

Netcompany A/S

IT Consultant

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Solution Manager til Cyberdivisionen

Capgemini Danmark A/S

Microsoft AI Solution Architect