服务器之家

服务器之家 > 正文

asp中去除内容HTML标签的三个function函数

时间:2019-10-17 10:18     来源/作者:asp代码网

代码如下:


'============================== 
'功能描述: 用正则除去HTML标记 
'不能保留<b><strong>等以及用户自定义的<和> 
'============================== 

Function RemoveHTMLTag(fString) 
        Dim re 
        Set re = New RegExp 
        re.IgnoreCase = True 
        re.Pattern = "<(.[^>]*)>" 
        fString = re.Replace(fString, "") 
        Set re = Nothing 
        RemoveHTMLTag = fString 
End Function 

'============================== 
'功能描述: 除去HTML标记 
'不能保留<b><strong>等以及用户自定义的<和> 
'============================== 

Function Remove_HTML(Str) 
        Dim ilen1, ilen2 
        Do While InStr(1, Str, "<", 1) >0 
                ilen1 = InStr(1, Str, "<", 1) 
                ilen2 = InStr(1, Str, ">", 1) 
                Str = Left(Str, ilen1 -1) & Mid(Str, ilen2 + 1) 
        Loop 
        Remove_HTML = Str 
End Function 

'============================== 
'功能描述: 除去HTML标记 
'去除自定义的标记,速度可能有点慢 
'============================== 

Function RemoveHTML(strText) 
        Dim TAGLIST 
        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 
        Dim nPos2 
        Dim nPos3 
        Dim strResult 
        Dim strTagName 
        Dim bRemove 
        Dim bSearchForBlock 

        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 
        strResult = Replace(strResult, Chr(9), "") 
        strResult = Replace(strResult, Chr(32), "") 
        strResult = Replace(strResult, Chr(13), "") 
        strResult = Replace(strResult, Chr(10), "") 
        strResult = Replace(strResult, vbCrLf, "") 
        RemoveHTML = strResult 
End Function

标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
返回顶部