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
复制代码 代码如下:
'==============================
'功能描述: 用正则除去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