26. september 2003 - 20:00Der 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?
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
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?
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
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 :)
i 27/09-2003 13:11:22 skal naturligvis være uden 2-tallet (skulle lige selv kunne kende forskel)
Synes godt om
Ny brugerNybegynder
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.