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 < and >
strOutput = Replace(strOutput, "<", " ")
strOutput = Replace(strOutput, ">", " ")
stripHTML = strOutput 'Return the value of strOutput
Set objRegExp = Nothing
End Function
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
-----------------------------------------^
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
--------------------------------------^
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