分享
 
 
 

移除HTML标签

王朝html/css/js·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

方法一 : 禁用HTML

最简单的方法是直接禁用html标签而不用移除它们. 可以使用Replace()函数. 例如:

strText = Replace(strText, "<script", "&lt;script", 1, -1, 1)

或者直接禁用所有的html:

strText = Replace(strText, "<", "&lt;")

这样做虽然很安全,但显得不够友好.(用户提交的文本会变得难以阅读)

方法二: 使用"<"和">"

怎样使得html标签从文本中消失呢? 我们可以去掉"<"和">"中间的所有内容

在JavaScript中这很简单:

function RemoveHTML( strText )

{

var regEx = /<[^>]*>/g;

return strText.replace(regEx, "");

}

关于正则表达式可以参考: http://developer.netscape.com/docs/manuals/js/client/jsguide/regexp.htm.

现在回到VBScript, 对于Scripting引擎5.0或更高版本(可以通过调用ScriptEngineMajorVersion和ScriptEngineMinorVersion函数来检验版本),我们也可以使用RegExp物体:

Function RemoveHTML( strText )

Dim RegEx

Set RegEx = New RegExp

RegEx.Pattern = "<[^>]*>"

RegEx.Global = True

RemoveHTML = RegEx.Replace(strText, "")

End Function

若不用正则表达式,下面的函数可以达到同样的目的:

Function RemoveHTML( strText )

Dim nPos1

Dim nPos2

nPos1 = InStr(strText, "<")

Do While nPos1 > 0

nPos2 = InStr(nPos1 + 1, strText, ">")

If nPos2 > 0 Then

strText = Left(strText, nPos1 - 1) & Mid(strText, nPos2 + 1)

Else

Exit Do

End If

nPos1 = InStr(strText, "<")

Loop

RemoveHTML = strText

End Function

以上的方法虽然都可以去掉括号内的html标签,但是这些方法都存在以下问题:

首先,文本内的任何不表示html的尖括号会被去除.而且两个尖括号中间的文本也会被删掉.换句话说,在文本中插入任何"<"或">"都会出现不可预料的结果.

另外,这种方法不能控制删除哪些html标签.比如<b><i>这些无害的标签通常是允许的.

方法三:使用IE或其他工具

有很多缺点:

"It may be desirable to parse HTML files inside a Web server process in response to a browser page request. However, the WebBrowser control, DHTML Editing Control, MSHTML, and other Internet Explorer components may not function properly in an Active Server Pages (ASP) page or other application run in a Web server application." (http://support.microsoft.com/support/kb/articles/Q244/0/85.ASP?LN=EN-US&SD=gn&FR=0)

方法四:VBScript

以下的函数可以限制到具体的html标签

简介:

要控制被删除的标签列表,可以通过向TAGLIST常数中添加/删除标记来实现. 例如,要保留所有的<B>标签,则从TAGLIST中删除B. 当前的列表包含了MSDN中的所有html标签以及 LAYER 标签. 每个标签要用";"括起来.

开始标签和结束标签都会被删除,例如"<A...>"和</A...>

若标签同时在 TAGLIST 和 BLOCKTAGLIST 常数中,则起始标签和结束标签之间的所有内容都会被删除

没有结束标记的标签不被视为html标签,其内容不会被删除

块标签若没有结尾标记,从此标签开始到文本结束的所有内容会被删除

若"<!--"后跟的字符不是空格,注释标签不会被删除

使用这个函数很简单:

strPlainText = RemoveHTML(strTextWithHTML)

函数内容如下:

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

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有