Avatar billede rsvend Nybegynder
26. september 2003 - 20:00 Der er 7 kommentarer og
1 løsning

Fjerne HTML tags fra tekst

Jeg henter en hel html side ind i en variabel i ASP/VBscript (vha. XMLHTTP). Hvordan fjerner jeg alle html tags effektivt - så jeg kun har den rene tekst fra siden?
Avatar billede wampiro-uha Nybegynder
26. september 2003 - 20:38 #1
Nu er det nogen år siden jeg har programmeret i ASP, men mener der er noget der hedder:

<%= Replace(Server.HTMLEncode(row("Tekst")), vbCrLf, "<br>" + vbCrLf) %>
Avatar billede edutasia Nybegynder
27. september 2003 - 00:21 #2
Det må være noget i den her dur (ikke testet, men burde virke):

Function stripHTML(strText)
    Dim oRegEx
    Set oRegEx = New RegExp
    oRegEx.Pattern = "<(.*?)>"
    oRegEx.Global = True
    oRegEx.IgnoreCase = True
    stripHTML = oRegEx.Replace(strText,"")
End Function


Brug den sådan her:

    DinVariabel = stripHTML(DinVariabel)
Avatar billede edutasia Nybegynder
27. september 2003 - 00:23 #3
... og så må du hellere lige tilføje denne linie til sidst i funktionen for god ordens skyld:)

    Set oRegEx = Nothing
Avatar billede rsvend Nybegynder
27. september 2003 - 01:43 #4
edutasia: Det ser fornuftigt ud - kan sikkert godt bruges. Men findes der evt. noget, der med sikkerhed kan fjerne anerkendte HTML-tags - og ikke blot det der står mellem < og >. Det ville give problemer med f.eks. denne kode:
<b>< vis det her ></b>
Dette ville blive vist i en browser, men fjernet af din funktion?
Avatar billede eagleeye Praktikant
27. september 2003 - 12:59 #5
Jeg har en funktion som fjerner alle kendte HTML tags.
http://www.eagleeye.dk/asp/removehtml/default.asp
Avatar billede edutasia Nybegynder
27. september 2003 - 13:11 #6
Hvis du blot vil undgå, at tekst som < vis det her > bliver tolket som tekst, kan funktionen stripHTML ovenfor udbygges med et check for mellemrum efter "<" sådan her (det løser i hvert fald ovennævnte problem):

Function stripHTML(strText)
    Dim oRegEx, Match, Matches, strResult
    strResult = ""
    Set oRegEx = New RegExp
    oRegEx.Pattern = "[^<>]+|(<.*?>)"
    oRegEx.Global = True
    oRegEx.IgnoreCase = True
    Set Matches = oRegEx.Execute(strText)
  For Each Match in Matches
        If InStr(Match,"<") = 1 Then
            If InStr(Match,"< ") = 1 Then strResult = strResult & Match
        Else
            strResult = strResult & Match
        End if
    Next
    stripHTML2 = strResult
End Function
Avatar billede edutasia Nybegynder
27. september 2003 - 13:15 #7
Hvis du derimod vil have fuld kontrol, så kun kendte tags fjernes, skal du have fat i en funktion som den, eagleeye har linket til. Den er dog, med al respekt, ikke så elegant. Den kan laves sådan her i stedet:


Function stripHTML(strText)
    Dim oRegEx, Match, Matches, strResult, arrTags, Tag, boolNoStrip
    arrTags = Split("html;head;meta;title;body;p;img;div;span;form;input;select;textarea;a;br;b;i;u", ";")
    strResult = ""
    Set oRegEx = New RegExp
    oRegEx.Pattern = "[^<>]+|(<.*?>)"
    oRegEx.Global = True
    oRegEx.IgnoreCase = True
    Set Matches = oRegEx.Execute(strText)
  For Each Match in Matches
        If InStr(Match,"<") = 1 Then
            boolNoStrip = True
            For Each Tag In arrTags
                If InStr(LCase(Match),"<" & Tag) = 1 Or InStr(LCase(Match),"</" & Tag) = 1 Then 'det er et kendt tag
                    boolNoStrip = False
                End If
            Next
            If boolNoStrip Then strResult = strResult & Match
        Else
            strResult = strResult & Match
        End if
    Next
    stripHTML = strResult
End Function


NB: Listen i arrTags ovenfor er selvfølgelig langtfra komplet - der ville du med fordel kunne bruge den, som eagleeye har :)
Avatar billede edutasia Nybegynder
27. september 2003 - 13:18 #8
Ups... linien

stripHTML2 = strResult

i 27/09-2003 13:11:22 skal naturligvis være uden 2-tallet (skulle lige selv kunne kende forskel)
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