#用户宣布的带有html的信息,怎么利用PHP过滤危险代码 以下是php源码
<?php function uh($str) { $farr = array( "/\s+/", "/< (\/?)(script|i?frame|style|html|body|title|link|meta|\?|\%) ([^>]*?)>/isU", "/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU", ); $tarr = array( " ", "<\\1\\2\\3>", "\\1\\2", ); $str = preg_replace( $farr,$tarr,$str); return $str; } ?>
(以下为正则内容,假如您只是想要成果源码可以不消看以下内容)
正则表达式教程:
/\s+/ 为过滤多余的空缺 \s是空缺 也是空格 这句是一个空格以上
/< (\/?)(script|i?frame|style|html|body|title|link|meta|\?|\%) ([^>]*?)>/isU
过滤 <script 等大概引入恶意内容或恶意改变显示机关的代码,假如不需要插入 flash等,还可以插手<object的过滤
/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU
过滤javascript的on事件
$tarr数组是 替换后的内容
"", 对付第1个 正则表达式 多余的空格替换为空(删除空格,这样说才大白)
"<\\1\\2\\3>", script 等标签的“<”和“>”标记换成中文的〈和〉。假如要直接排除不安详的标签,这里可以留空
"\\1\\2", //过滤javascript的on事件 好比:<a onclick=“show()”> 换成 <a> ,简朴来说是去掉onXXXX的事件