asp用正则过滤html标签
有时候我们需要程序截图文章中的部分字符作为摘要显示出来,这时我们一般是只希望提取的字符串是纯文本的,没有如何html标签,如果我们章节用left函数截取的化,得到的内容就包含了html代码,为了解决这个问题,我们可以有两个方法。
一是,在数据库中特别设置一个字段用于保存摘要。优点是你可以自己总结文章摘要,这样可读性更强,不至于让人看不懂。对seo也是有好处的,缺点就是麻烦了一点,要多花心思和时间。
二是,用程序提前文章中的特定内容作为摘要,一般是前面多少个字符。此时我们就可以使用正则表达式来轻松的实现这个提取前N个纯字符的功能。
我们知道html标签有一个特定都是用<>包含的,所以正则表达式只要匹配<>就可以了:
下面的两个函数都可以实现过滤html标签的作用:
Function RemoveHTML(str)
Dim re
Set re=New RegExp
re.Pattern="<.*?>"
re.IgnoreCase=True
re.Global=True
str=re.Replace(str,"")
Set re=Nothing
RemoveHTML=str
End Function
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
对于效率来讲应该第一个更好。
代码如下:
<%
Dim contenstr
contenstr="<a href='http://www.aspxhome.com' title="中国asp之家">中国asp之家<b>欢迎您</b>!欢迎出来看看,呵呵! "
'当然这里的contenstr在实际使用时换成你的文章内容
'调用过滤函数移除html标签
contenstr=RemoveHTML(contenstr)
contenstr=left(contenstr,100) '截取前100个字符
response.write("移除html标签后:" & contenstr)
%>