Avatar billede loukas Mester
16. januar 2003 - 10:39 Der er 8 kommentarer og
1 løsning

Strippe HTML

Jeg har prøvet med nedenstående function, og den virker for så vidt fint.
Men den fjerner ikke
<script language="JavaScript">
bla bla
</script>


PS. Jeg er helt ny med regExp.

Function stripHTML(strHTML)
'Strips the HTML tags from strHTML

  Dim objRegExp, strOutput
  Set objRegExp = New Regexp

  objRegExp.IgnoreCase = True
  objRegExp.Global = True
  objRegExp.Pattern = "<(.|\n)+?>"

  'Replace all HTML tag matches with the empty string
  strOutput = objRegExp.Replace(strHTML, "")
 
  'Replace all < and > with &lt; and &gt;
  strOutput = Replace(strOutput, "<", " ")
  strOutput = Replace(strOutput, ">", " ")
 
  stripHTML = strOutput    'Return the value of strOutput

  Set objRegExp = Nothing
End Function
Avatar billede eagleeye Praktikant
16. januar 2003 - 11:30 #1
Jeg har lavet en function som fjerner det hele, og man kan selv vælge hvad som skal fjernes hvis man stadig ønsker eksvis fed skrift. Se koden her:

http://www.eagleeye.dk/asp/removehtml/default.asp
Avatar billede eagleeye Praktikant
16. januar 2003 - 11:31 #2
Det er den føste function som starter med:

Function RemoveHTML( strInputText )

  TAGLIST = ";!--;!DOCTYPE;A;A..................
Avatar billede loukas Mester
16. januar 2003 - 11:32 #3
ok fedt det må jeg lige kigge på.
Men det bliver først i morgen fog jeg har ikke mere tid i dag ;-)
Avatar billede loukas Mester
16. januar 2003 - 11:41 #4
Jeg får fejlen:
Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0409)
Strengkonstanten er uafsluttet
/test/stipHTML.asp, line 57, column 42
nPos3 = InStr(nPos1 + 1, strText, " 0 Then
-----------------------------------------^
Avatar billede medions Nybegynder
16. januar 2003 - 12:26 #5
nPos3 = InStr(nPos1 + 1, strText) =  0 Then

//>Rune
Avatar billede loukas Mester
16. januar 2003 - 12:37 #6
Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0401)
Slut på sætning var ventet
/test/stipHTML.asp, line 57, column 39
nPos3 = InStr(nPos1 + 1, strText) = 0 Then
--------------------------------------^
Avatar billede medions Nybegynder
16. januar 2003 - 12:38 #7
Kan jeg ik' prøv at se koden fra linje 50 til og med 65?

//>Rune
Avatar billede eagleeye Praktikant
16. januar 2003 - 13:17 #8
Hmm,mm browseren laver åbenbart ged i det prøv at copy/paste functionen herfra:


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 loukas Mester
18. januar 2003 - 10:48 #9
Jeg siger mange tak.
Det var en stor hjælp
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