[导入]ASP常用函数:HTMLFilter()

<%
'过滤HTML各种标签样式脚本
'来源:http://jorkin.reallydo.com/article.asp?id=521
'需要RegReplace函数: http://jorkin.reallydo.com/article.asp?id=345

Function HTMLFilter(sHTML, sFilters)
    
If sHTML & "" = "" Then Exit Function
    If
sFilters & "" = "" Then sFilters = "SCRIPT,OBJECT"
    
Dim aFilters
     aFilters = Split(UCase(sFilters), ",")
    
For i = 0 To UBound(aFilters)
        
Select Case UCase(Trim(aFilters(i)))
            
Case "JORKIN"
                
Do While InStr(sHTML, "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;") >0
                    
sHTML = Replace(sHTML, "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;", "&nbsp;&nbsp;&nbsp;&nbsp;")
                
Loop
            Case
"SCRIPT"
                
'// 去除脚本<scr ipt></scr ipt>及 onload 等
                
sHTML = RegReplace(sHTML, "<SCRIPT[\s\S]*?</SCRIPT>", "")
                
sHTML = RegReplace(sHTML, "\s[on].+?=\s+?([\""|\'])(.*?)\1", "")
                
sHTML = RegReplace(sHTML, "(JAVASCRIPT|JSCRIPT|VBSCRIPT|VBS):", "$1:")
            
Case "FIXIMG"
                
sHTML = RegReplace(sHTML, "<IMG.*?\sSRC=([^\""\'\s][^\""\'\s>]*).*?>", "<img src=$2 border=0>")
                
sHTML = RegReplace(sHTML, "<IMG.*SRC=([\""\']?)(.\1\S+).*?>", "<img src=$2 border=0>")
            
Case "TABLE"
                
'// 去除表格<table><tr><td><th>
                
sHTML = RegReplace(sHTML, "</?TABLE[^>]*>", "")
                
sHTML = RegReplace(sHTML, "</?TBODY[^>]*>", "")
                
sHTML = RegReplace(sHTML, "<(/?)TR[^>]*>", "<$1p>")
                
sHTML = RegReplace(sHTML, "</?TH[^>]*>", " ")
                
sHTML = RegReplace(sHTML, "</?TD[^>]*>", " ")
            
Case "CLASS"
                
'// 去除样式类class=""
                
sHTML = RegReplace(sHTML, "(<[^>]+) CLASS=[^ |^>]+([^>]*>)", "$1 $2")
                
sHTML = RegReplace(sHTML, "\sCLASS\s*?=\s*?([\""|\'])(.*?)\1", "")
            
Case "STYLE"
                
'// 去除样式style=""
                
sHTML = RegReplace(sHTML, "(<[^>]+) STYLE=[^ |^>]+([^>]*>)", "$1 $2")
                
sHTML = RegReplace(sHTML, "\sSTYLE\s*?=\s*?([\""|\'])(.*?)\1", "")
            
Case "XML"
                
'// 去除XML<?xml>
                
sHTML = RegReplace(sHTML, "<\\?XML[^>]*>", "")
            
Case "NAMESPACE"
                
'// 去除命名空间<o:p></o:p>
                
sHTML = RegReplace(sHTML, "<\/?[a-z]+:[^>]*>", "")
            
Case "FONT"
                
'// 去除字体<font></font>
                
sHTML = RegReplace(sHTML, "</?FONT[^>]*>", "")
            
Case "MARQUEE"
                
'// 去除字幕<marquee></marquee>
                
sHTML = RegReplace(sHTML, "</?MARQUEE[^>]*>", "")
            
Case "OBJECT"
                
'// 去除对象<object><param><embed></object>
                
sHTML = RegReplace(sHTML, "</?OBJECT[^>]*>", "")
                
sHTML = RegReplace(sHTML, "</?PARAM[^>]*>", "")
                
sHTML = RegReplace(sHTML, "</?EMBED[^>]*>", "")
            
Case "COMMENT"
                
'// 去除HTML注释, 会处理<script>和<style>内注释, 慎用
                
sHTML = RegReplace(sHTML, "<!--[\s\S]*?-->", "")
            
Case Else
                
'// 去除其它标签
                
sHTML = RegReplace(sHTML, "</?" & aFilters(i) & "[^>]*?>", "")
        
End Select
    Next
    
HTMLFilter = sHTML
End Function
%>


文章来源: http://Jorkin.Reallydo.Com/default.asp?id=521

转载于:https://www.cnblogs.com/pboy2925/archive/2008/06/12/1248022.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值