日期:2014-05-17  浏览次数:20975 次

怎么去除字符串中的html标签?【有难度】
VBScript code

Function RemoveHTML(strHTML)
    Dim objRegExp, Match, Matches
    Set objRegExp = New Regexp
    objRegExp.IgnoreCase = True
    objRegExp.Global = True
    objRegExp.Pattern = "(\<.[^\<]*\>)"
    Set Matches = objRegExp.Execute(strHTML)
    For Each Match in Matches
    strHtml=Replace(strHTML,Match.Value,"")
    Next
    RemoveHTML=strHTML
    Set objRegExp = Nothing
End Function



大家都见过上面这个代码吧。
我现在发现这个代码不全面啊。

我有个字符串,是从数据库中读取出来的。
需要对它进行 去除html标记的 处理工作。然后显示在网页某个地方。
我希望对它进行 强有力的 去除。我找了很久,发现网上的都不能用啊。

特别是:不能灵活处理 标签嵌套的问题。比如注释里有代码。

好吧,我把代码贴出来

HTML code

<script language="JavaScript">
<!--
    var country="楼主"    
//-->
</script>

<style type="text/css">
    .myname{font-family:"饿了";}
</style>

<table><tr><td>哇塞</td></tr></table>

<iframe src=".............." title="还在加班"></iframe>
<OBJECT src="..............">郁闷啊</OBJECT>

<!-- 注释 我的<b>毅力</b>很强 -->

<p>
    <font color=red>注意了:</font>
    100只<i>鸡</i> < 200只<i>鸡</i> > 50只<i>鸡</i> = 一百只<i>鸡</i>
</p>



我希望有这样一个函数,经过处理之后,上面的内容 只返回如下结果:

HTML code

哇塞
注意了:
100只鸡 < 200只鸡 > 50只鸡 = 一百只鸡




希望能得到一个完整的函数。 注意,用ASP。

------解决方案--------------------
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
www.teying.net
------解决方案--------------------
HTML code
 <textarea id="sss" rows="10" cols="100"></textarea>
  <SCRIPT Language="VBScript">
  Function RemoveHTML(strHTML)
    Dim objRegExp, Match, Matches
    Set objRegExp = New Regexp
    objRegExp.IgnoreCase = True
    objRegExp.Global = True
    objRegExp.Pattern = "<(.[^\<]*)>(.[^\<\1]*)<\/\1>"
    RemoveHTML = objRegExp.Replace(strHTML,"$2")
    Set objRegExp = Nothing
End Function
sss.value = RemoveHTML("100只<i>鸡</i> < 200只<i>鸡</i> > 50只<i>鸡</i> = 一百只<i>鸡</i>")

------解决方案--------------------
这些文本是你在文本编辑器里面输入的?预先排好格式的吗?
------解决方案--------------------
只删除标签:
HTML code
 <textarea id="sss" rows="10" cols="100"></textarea>
  <SCRIPT Language="VBScript">
  Function RemoveHTML(strHTML)
    Dim objRegExp, Match, Matches
    Set objRegExp = New Regexp
    objRegExp.IgnoreCase = True
    objRegExp.Global = True
    objRegExp.Pattern = "<.[^\s|^<]*>"
    RemoveHTML = objRegExp.Replace(strHTML,"")
    Set objRegExp = Nothing
End Function
sss.value = RemoveHTML("100只<i>鸡<