Avatar billede grafikeren Nybegynder
16. juli 2004 - 16:05 Der er 6 kommentarer og
3 løsninger

Fjerne html tags

Hej

Hvordan fjerner jeg html tags (fx <p>) fra min udskrift af min database?

På forhånd tak for hjælpen.
Avatar billede eagleeye Praktikant
16. juli 2004 - 16:23 #1
Man kan disable dem med Server.HTMLEncode.

Men vil man fjerne dem skal man selv lave en funktion og sådan en har jeg til at fjerne dem:

Function RemoveHTML( strInputText )

  TAGLIST = ";!--;!DOCTYPE;A;ACRONYM;ADDRESS;APPLET;AREA;B;BASE;BASEFONT;" &_
    "BGSOUND;BIG;BLOCKQUOTE;BODY;BR;BUTTON;CAPTION;CENTER;CITE;CODE;" &_
    "COL;COLGROUP;COMMENT;DD;DEL;DFN;DIR;DIV;DL;DT;EM;EMBED;FIELDSET;" &_
    "FONT;FORM;FRAME;FRAMESET;HEAD;H1;H2;H3;H4;H5;H6;HR;HTML;I;IFRAME;IMG;" &_
    "INPUT;INS;ISINDEX;KBD;LABEL;LAYER;LAGEND;LI;LINK;LISTING;MAP;MARQUEE;" &_
    "MENU;META;NOBR;NOFRAMES;NOSCRIPT;OBJECT;OL;OPTION;P;PARAM;PLAINTEXT;" &_
    "PRE;Q;S;SAMP;SCRIPT;SELECT;SMALL;SPAN;STRIKE;STRONG;STYLE;SUB;SUP;" &_
    "TABLE;TBODY;TD;TEXTAREA;TFOOT;TH;THEAD;TITLE;TR;TT;U;UL;VAR;WBR;XMP;" 

  Const BLOCKTAGLIST = ";APPLET;EMBED;FRAMESET;HEAD;NOFRAMES;NOSCRIPT;OBJECT;SCRIPT;STYLE;"
   
  Dim nPos1, nPos2, nPos3
  Dim strResult, strTagName, bRemove, bSearchForBlock
 
  Dim runNo, AttackLimit, strRef
 
  runNo = 1
  AttackLimit = 5
 
  strResult = strInputText
  do
    runNo = runNo + 1
    strRef = strResult
    strText = strRef
    strResult = ""
   
    nPos1 = InStr(strText, "<")
    Do While nPos1 > 0
      nPos2 = InStr(nPos1 + 1, strText, ">")
      If nPos2 > 0 Then
        strTagName = Mid(strText, nPos1 + 1, nPos2 - nPos1 - 1)
        strTagName = Replace(Replace(strTagName, vbCr, " "), vbLf, " ")
        nPos3 = InStr(strTagName, " ")
        If nPos3 > 0 Then
          strTagName = Left(strTagName, nPos3 - 1)
        End If
        If Left(strTagName, 1) = "/" Then
          strTagName = Mid(strTagName, 2)
          bSearchForBlock = False
        Else
          bSearchForBlock = True
        End If   
        If InStr(1, TAGLIST, ";" & strTagName & ";", vbTextCompare) > 0 Then
          bRemove = True
          If bSearchForBlock Then
            If InStr(1, BLOCKTAGLIST, ";" & strTagName & ";", vbTextCompare) > 0 Then
              nPos2 = Len(strText)
              nPos3 = InStr(nPos1 + 1, strText, "</" & strTagName, vbTextCompare)
              If nPos3 > 0 Then
                nPos3 = InStr(nPos3 + 1, strText, ">")
              End If
              If nPos3 > 0 Then
                nPos2 = nPos3
              End If
            End If
          End If
        Else
          bRemove = False
        End If
        If bRemove Then
          strResult = strResult & Left(strText, nPos1 - 1)
          strText = Mid(strText, nPos2 + 1)
        Else
          strResult = strResult & Left(strText, nPos1)
          strText = Mid(strText, nPos1 + 1)
        End If
      Else
        strResult = strResult & strText
        strText = ""
      End If
      nPos1 = InStr(strText, "<")
    Loop
    strResult = strResult & strText
 
  loop until (strRef = strResult) OR (runNo = AttackLimit)
 
  if (runNo >= AttackLimit) then
    strResult = "...text removed..."
  end if
  RemoveHTML = strResult
End Function
Avatar billede nythjem Nybegynder
16. juli 2004 - 17:08 #2
Man kunne også bruge denne, som jeg selv fik, da jeg spurgte et noget lignende spørgsmål..

<%
Function ReplaceTest(tekst,patrn, replStr)
  Dim regEx, str1
  Set regEx = New RegExp
  regEx.Pattern = patrn
  regEx.global = true
  regEx.IgnoreCase = True
  ReplaceTest = regEx.Replace(tekst, replStr)
End Function
%>



<%
strTekst = record("dintabelsnavn")
udenHTML = ReplaceTest(strTekst,"(<[^><]*>)"," ")
response.write udenHTML
%>
Avatar billede grafikeren Nybegynder
16. juli 2004 - 17:16 #3
Hej.

Det ser fint ud. Hvorfor får jeg følgende fejl:
"Syntax error
Function ReplaceTest(tekst,patrn, replStr)
^"

Dette får jeg i begge funktioner.
Avatar billede grafikeren Nybegynder
16. juli 2004 - 17:17 #4
Hej. Ups, funktionerne havde sneget sig ind i en løkke. :o)
Avatar billede eagleeye Praktikant
16. juli 2004 - 17:18 #5
den fjerner ikke tags den fjerne alt imellem < og > så hvis folk bruger < og > i teksten vil der blive klikket i teksten.
Avatar billede grafikeren Nybegynder
16. juli 2004 - 17:40 #6
Det er et flot script du har lavet eagleeye, og det er klart også det mest korrekte. De fleste skriver dog ikke <sådan> <her>. Men læg et svar. Så splitter vi pointsne
Avatar billede eagleeye Praktikant
16. juli 2004 - 17:42 #7
Ok :)

hvis der nogle tags du vil acceptere kan du fjerne dem fra tag variablen: TAGLIST
Avatar billede nythjem Nybegynder
16. juli 2004 - 17:51 #8
Hej igen :)

Godt du fandt ud af fejlen..

God weekend.
Avatar billede grafikeren Nybegynder
16. juli 2004 - 17:58 #9
Tak for det. God weekend.
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