欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-11-24 20:13:10
复制代码 代码如下:'============================== '功能描述: 用正则除去html标记 '不能保留
复制代码 代码如下:

'==============================
'功能描述: 用正则除去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