php函数的参数的过滤方法,php过滤字符函数的几种方法代码

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

+----------------------------------------------------------

*/

static public function safeHtml($text, $tags = null)

{

$text = trim($text);

//完全过滤注释

$text = preg_replace('//','',$text);

//完全过滤动态代码

$text = preg_replace('//','',$text);

//完全过滤js

$text = preg_replace('/

$text = str_replace('[','[',$text);

$text = str_replace(']',']',$text);

$text = str_replace('|','|',$text);

//过滤换行符

$text = preg_replace('/\r?\n/','',$text);

//br

$text = preg_replace('/
/i','

',$text);

$text = preg_replace('/(\
\s*){10,}/i','

',$text);

//过滤危险的属性,如:过滤on事件lang js

while(preg_match('/(<[^><]+)(lang|on|action|background|codebase|dynsrc|lowsrc)[^><]+/i',$text,$mat)){

$text=str_replace($mat[0],$mat[1],$text);

}

while(preg_match('/(<[^><]+)(window\.|javascript:|js:|about:|file:|document\.|vbs:|cookie)([^><]*)/i',$text,$mat)){

$text=str_replace($mat[0],$mat[1].$mat[3],$text);

}

if( empty($allowTags) ) { $allowTags = self::$htmlTags['allow']; }

//允许的HTML标签

$text = preg_replace('/<('.$allowTags.')( [^><\[\]]*)>/i','[\1\2]',$text);

//过滤多余html

if ( empty($banTag) ) { $banTag = self::$htmlTags['ban']; }

$text = preg_replace('/<\/?('.$banTag.')[^><]*>/i','',$text);

//过滤合法的html标签

while(preg_match('/<([a-z]+)[^><\[\]]*>[^><]*<\/\1>/i',$text,$mat)){

$text=str_replace($mat[0],str_replace('>',']',str_replace('<','[',$mat[0])),$text);

}

//转换引号

while(preg_match('/(\[[^\[\]]*=\s*)(\"|\')([^\2=\[\]]+)\2([^\[\]]*\])/i',$text,$mat)){

$text=str_replace($mat[0],$mat[1].'|'.$mat[3].'|'.$mat[4],$text);

}

//空属性转换

$text = str_replace('\'\'','||',$text);

$text = str_replace('""','||',$text);

//过滤错误的单个引号

while(preg_match('/\[[^\[\]]*(\"|\')[^\[\]]*\]/i',$text,$mat)){

$text=str_replace($mat[0],str_replace($mat[1],'',$mat[0]),$text);

}

//转换其它所有不合法的 < >

$text = str_replace('<','<',$text);

$text = str_replace('>','>',$text);

$text = str_replace('"','"',$text);

//反转换

$text = str_replace('[','<',$text);

$text = str_replace(']','>',$text);

$text = str_replace('|','"',$text);

//过滤多余空格

$text = str_replace(' ',' ',$text);

return $text;

}

?>\>

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值