在ASP版本和PHP版本都有这个函数的,只是内容有些诧异,因为PHP原生没有UBB功能,所以PHP的过滤函数里忽略了UBB功能(其实老子是需要的啊)
ASP版本的内容如下:
'*********************************************************
' 目的: 检查引用
' 输入:
' 输入: 要替换的字符代号
' 返回:
'*********************************************************
Function TransferHTML(ByVal source,ByVal para)
Dim objRegExp
If IsNull(source)=True Then Exit Function
If InStr(para,"[mobilerequest]") Then
para=para&"[enter][closehtml]"
'如何判断HTML标签和用户输入的类似0<1这种数据,还真是个大麻烦
End If
'先换"&"
If Instr(para,"[&]")>0 Then source=Replace(source,"&","&")
If Instr(para,"[<]")>0 Then source=Replace(source,"<","<")
If Instr(para,"[>]")>0 Then source=Replace(source,">",">")
If Instr(para,"[""]")>0 Then source=Replace(source,"""",""")
If Instr(para,"[space]")>0 Then source=Replace(source," "," ")
If Instr(para,"[delspace]")>0 Then
Source=Replace(source," ","")
Source=Replace(source," ","")
End If
If Instr(para,"[enter]")>0 Then
source=Replace(source,vbCrLf,"<br/>")
source=Replace(source,vbLf,"<br/>")
End If
If Instr(para,"[vbCrlf]")>0 Then
Set objRegExp=New RegExp
objRegExp.IgnoreCase =True
objRegExp.Global=True
objRegExp.Pattern="((</?form[^\n<]*>)|(<select[^\n<]*>)|(<textarea[^\n<]*>)|(</?option[^\n<]*>)|(</?dl[^\n<]*>)|(</?dt[^\n<]*>)|(</?dd[^\n<]*>)|(</?th[^\n<]*>)|(</?tr[^\n<]*>)|(</?td[^\n<]*>)|(</?tbody[^\n<]*>)|(</?table[^\n<]*>)|(</?hr[^\n<]*>)|(</?div[^\n<]*>)|(</?ul[^\n<]*>)|(</?li[^\n<]*>)|(</?ol[^\n<]*>)|(</?h1[^\n<]*>)|(</?h2[^\n<]*>)|(</?h3[^\n<]*>)|(</?h4[^\n<]*>)|(</?h5[^\n<]*>)|(</?h6[^\n<]*>)|(</?p[^\n<]*>))(\x20*(\r\n|\n))"
source= objRegExp.Replace(source,"$1")
objRegExp.Pattern="(\r\n|\n)"
source= objRegExp.Replace(source,"<br/>")
source=Replace(source,"<html>","")
source=Replace(source,"</html>","")
source=Replace(source,"<body>","")
source=Replace(source,"</body>","")
End If
If Instr(para,"[vbTab]")>0 Then source=Replace(source,vbTab," ")
If Instr(para,"[upload]")>0 Then
source=Replace(source,"src=""upload/","src=""<#ZC_BLOG_HOST#>" & ZC_UPLOAD_DIRECTORY & "/")
source=Replace(source,"href=""upload/","href=""<#ZC_BLOG_HOST#>" & ZC_UPLOAD_DIRECTORY & "/")
source=Replace(source,"value=""upload/","value=""<#ZC_BLOG_HOST#>" & ZC_UPLOAD_DIRECTORY & "/")
source=Replace(source,"href=""http://upload/","href=""<#ZC_BLOG_HOST#>" & ZC_UPLOAD_DIRECTORY & "/")
source=Replace(source,"(this.nextSibling,'upload/","(this.nextSibling,'<#ZC_BLOG_HOST#>" & ZC_UPLOAD_DIRECTORY & "/")
source=Replace(source,"src=""image/face/","src=""<#ZC_BLOG_HOST#>zb_users/emotion/face/")
End If
If Instr(para,"[anti-upload]")>0 Then
source=Replace(source,"src="""& GetCurrentHost() & ZC_UPLOAD_DIRECTORY & "/","src=""upload/")
source=Replace(source,"href="""& GetCurrentHost() & ZC_UPLOAD_DIRECTORY & "/","href=""upload/")
source=Replace(source,"value="""& GetCurrentHost() & ZC_UPLOAD_DIRECTORY & "/","value=""upload/")
source=Replace(source,"href="""& GetCurrentHost() & ZC_UPLOAD_DIRECTORY & "/","href=""http://upload/")
source=Replace(source,"(this.nextSibling,'"& GetCurrentHost() & ZC_UPLOAD_DIRECTORY & "/","(this.nextSibling,'upload/")
source=Replace(source,"src="""& GetCurrentHost() & "zb_users/emotion/face/","src=""<#ZC_BLOG_HOST#>zb_users/emotion/face/")
End If
If Instr(para,"[zc_blog_host]")>0 Then
source=Replace(source,"<#ZC_BLOG_HOST#>",GetCurrentHost())
End If
If Instr(para,"[no-asp]")>0 Then
source=Replace(source,"<"&"%","<"&"%")
source=Replace(source,"%"&">","%"&">")
End If
If Instr(para,"[nofollow]")>0 Then
source=Replace(source,"<a ","<a rel=""nofollow"" ")
End If
If Instr(para,"[nohtml]")>0 Then
Set objRegExp=New RegExp
objRegExp.IgnoreCase =True
objRegExp.Global=True
objRegExp.Pattern="<[^>]*>"
source= objRegExp.Replace(source,"")
End If
If Instr(para,"[filename]")>0 Then
source=Replace(source,"/","")
source=Replace(source,"\","")
source=Replace(source,":","")
source=Replace(source,"?","")
source=Replace(source,"*","")
source=Replace(source,"""","")
source=Replace(source,"<","")
source=Replace(source,">","")
source=Replace(source,"|","")
source=Replace(source," ","")
End If
If Instr(para,"[directory&file]")>0 Then
source=Replace(source,"/","/")
source=Replace(source,"\","/")
source=Replace(source,":","")
source=Replace(source,"?","")
source=Replace(source,"*","")
source=Replace(source,"""","")
source=Replace(source,"<","")
source=Replace(source,">","")
source=Replace(source,"|","")
source=Replace(source," ","")
End If
If Instr(para,"[normalname]")>0 Then
source=Replace(source,"$","")
source=Replace(source,"(","")
source=Replace(source,")","")
source=Replace(source,"*","")
source=Replace(source,"+","")
source=Replace(source,",","")
source=Replace(source,"[","")
source=Replace(source,"]","")
source=Replace(source,"{","")
source=Replace(source,"}","")
source=Replace(source,"?","")
source=Replace(source,"\","")
source=Replace(source,"^","")
source=Replace(source,"|","")
source=Replace(source,":","")
source=Replace(source,"""","")
source=Replace(source,"'","")
End If
If Instr(para,"[normaltag]")>0 Then
source=Replace(source,"$","")
source=Replace(source,"(","")
source=Replace(source,")","")
source=Replace(source,"*","")
source=Replace(source,"+","")
source=Replace(source,"[","")
source=Replace(source,"]","")
source=Replace(source,"{","")
source=Replace(source,"}","")
source=Replace(source,"?","")
source=Replace(source,"\","")
source=Replace(source,"^","")
source=Replace(source,"|","")
source=Replace(source,":","")
source=Replace(source,"""","")
source=Replace(source,"'","")
Set objRegExp=New RegExp
objRegExp.IgnoreCase =True
objRegExp.Global=True
objRegExp.Pattern=",+"
source= objRegExp.Replace(source,",")
objRegExp.Pattern="(^,|,$)"
source= objRegExp.Replace(source,"")
End If
If Instr(para,"[textarea]")>0 Then
'Set objRegExp=New RegExp
'objRegExp.IgnoreCase =True
'objRegExp.Global=True
'objRegExp.Pattern="(&)([#a-z0-9]{2,10})(;)"
'source= objRegExp.Replace(source,"&$2$3")
source=Replace(source,"&","&")
source=Replace(source,"%","%")
source=Replace(source,"<","<")
source=Replace(source,">",">")
End If
If Instr(para,"[japan-html]")>0 Then
source=Replace(source,"ガ","ガ")
source=Replace(source,"ギ","ギ")
source=Replace(source,"ア","ア")
source=Replace(source,"ゲ","ゲ")
source=Replace(source,"ゴ","ゴ")
source=Replace(source,"ザ","ザ")
source=Replace(source,"ジ","ジ")
source=Replace(source,"ズ","ズ")
source=Replace(source,"ゼ","ゼ")
source=Replace(source,"ゾ","ゾ")
source=Replace(source,"ダ","ダ")
source=Replace(source,"ヂ","ヂ")
source=Replace(source,"ヅ","ヅ")
source=Replace(source,"デ","デ")
source=Replace(source,"ド","ド")
source=Replace(source,"バ","バ")
source=Replace(source,"パ","パ")
source=Replace(source,"ビ","ビ")
source=Replace(source,"ピ","ピ")
source=Replace(source,"ブ","ブ")
source=Replace(source,"ブ","ブ")
source=Replace(source,"プ","プ")
source=Replace(source,"ベ","ベ")
source=Replace(source,"ペ","ペ")
source=Replace(source,"ボ","ボ")
source=Replace(source,"ポ","ポ")
source=Replace(source,"ヴ","ヴ")
End If
If Instr(para,"[html-japan]")>0 Then
source=Replace(source,"ガ","ガ")
source=Replace(source,"ギ","ギ")
source=Replace(source,"ア","ア")
source=Replace(source,"ゲ","ゲ")
source=Replace(source,"ゴ","ゴ")
source=Replace(source,"ザ","ザ")
source=Replace(source,"ジ","ジ")
source=Replace(source,"ズ","ズ")
source=Replace(source,"ゼ","ゼ")
source=Replace(source,"ゾ","ゾ")
source=Replace(source,"ダ","ダ")
source=Replace(source,"ヂ","ヂ")
source=Replace(source,"ヅ","ヅ")
source=Replace(source,"デ","デ")
source=Replace(source,"ド","ド")
source=Replace(source,"バ","バ")
source=Replace(source,"パ","パ")
source=Replace(source,"ビ","ビ")
source=Replace(source,"ピ","ピ")
source=Replace(source,"ブ","ブ")
source=Replace(source,"ブ","ブ")
source=Replace(source,"プ","プ")
source=Replace(source,"ベ","ベ")
source=Replace(source,"ペ","ペ")
source=Replace(source,"ボ","ボ")
source=Replace(source,"ポ","ポ")
source=Replace(source,"ヴ","ヴ")
End If
If Instr(para,"[html-format]")>0 Then
source=Replace(source,"&","&")
source=Replace(source,"<","<")
source=Replace(source,">",">")
source=Replace(source,"""",""")
End If
If Instr(para,"[anti-html-format]")>0 Then
source=Replace(source,""","""")
source=Replace(source,"<","<")
source=Replace(source,">",">")
source=Replace(source,"&","&")
End If
If Instr(para,"[wapnohtml]")>0 Then
source=Replace(source,"<br/>",vbCrLf)
source=Replace(source,"<br>",vbCrLf)
Set objRegExp=New RegExp
objRegExp.IgnoreCase =True
objRegExp.Global=True
objRegExp.Pattern="(<[^>]*)|([^<]*>)"
source= objRegExp.Replace(source,"")
objRegExp.Pattern="(\r\n|\n)"
source= objRegExp.Replace(source,"<br/>")
End If
If Instr(para,"[nbsp-br]")>0 Then
Set objRegExp=New RegExp
objRegExp.IgnoreCase =True
objRegExp.Global=True
objRegExp.Pattern="<$|<b$|<br$|<br/$"
source= objRegExp.Replace(source,"")
objRegExp.Pattern="^br/>|^r/>|^/>|^>"
source= objRegExp.Replace(source,"")
objRegExp.Pattern="<br/>"
source= objRegExp.Replace(source,"<br/>")
objRegExp.Pattern="&nbsp;"
source= objRegExp.Replace(source," ")
End If
If Instr(para,"[closehtml]")>0 Then
source=closeHTML(source)
End If
If Instr(para,"[anti-zc_blog_host]")>0 Then
source=Replace(source,GetCurrentHost(),"<#ZC_BLOG_HOST#>")
End If
TransferHTML=source
End Function
'*********************************************************这是PHP版本的:
/**
* 通过正则表达式格式化字符串
* @param string $source 字符串
* @param string $para 正则表达式,可用[html-format]|[nohtml]|[noscript]|[enter]|[noenter]|[filename]|[normalname]或自定义表达式
* @return string
*/
function TransferHTML($source, $para) {
if (strpos($para, '[html-format]') !== false) {
$source = htmlspecialchars($source);
}
if (strpos($para, '[nohtml]') !== false) {
$source = preg_replace("/<([^<>]*)>/si", "", $source);
$source = str_replace("<", "˂", $source);
$source = str_replace(">", "˃", $source);
}
if (strpos($para, '[noscript]') !== false) {
$source = preg_replace("/<(script.*?)>(.*?)<(\/script.*?)>/si", "", $source);
$source = preg_replace("/<(\/?script.*?)>/si", "", $source);
$source = preg_replace("/javascript/si", "", $source);
$source = preg_replace("/vbscript/si", "", $source);
$source = preg_replace("/on([a-z]+)\s*=/si", "on\\=", $source);
}
if (strpos($para, '[enter]') !== false) {
$source = str_replace("\r\n", "<br/>", $source);
$source = str_replace("\n", "<br/>", $source);
$source = str_replace("\r", "<br/>", $source);
$source = preg_replace("/(<br\/>)+/", "<br/>", $source);
}
if (strpos($para, '[noenter]') !== false) {
$source = str_replace("\r\n", "", $source);
$source = str_replace("\n", "", $source);
$source = str_replace("\r", "", $source);
}
if (strpos($para, '[filename]') !== false) {
$source = str_replace(array("/", "#", "$", "\\", ":", "?", "*", "\"", "<", ">", "|", " "), array(""), $source);
}
if (strpos($para, '[normalname]') !== false) {
$source = str_replace(array("#", "$", "(", ")", "*", "+", "[", "]", "{", "}", "?", "\\", "^", "|", ":", "'", "\"", ";", "@", "~", "=", "%", "&"), array(""), $source);
}
return $source;
}突然想说ASP版本需要考虑的东西太尼玛多了...
转载请注明:鸟儿博客 » ZBLOG内置过滤函数