PHP过滤html网页标记
在PHP留言本或PHP评论系统中,往往需要过滤掉HTML标记,去掉JAVASCRIP等,以防范PHP的跨站攻击,除了需要将防客的留言信息经过处理外,有时候还需要对留言信息进行处理,比如去除回车和换行符等,下面是一个PHP的范例,利用了数组的形式将要去除的网页标记包含进来,然后通过 PHP 的替换函数 preg_replace 进行过滤,另附去除回车换行符的代码,其实质原理都是一样的,都是通过查找相应的标记进行替换操作,以达到过滤的目的。
[code lang="php"]
]*?>.*?'si",//去掉 javascript
"'<[\/\!]*?[^<>]*?>'si", // 去掉 HTML 标记
"'([\r\n])[\s]+'", // 去掉空白字符
"'&(quot|#34);'i", // 替换 HTML 实体
"'&(amp|#38);'i",
"'&(lt|#60);'i",
"'&(gt|#62);'i",
"'&(nbsp|#160);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
"'&(copy|#169);'i",
"'(\d+);'e"); // 作为 PHP 代码运行
$replace = array ("",
"",
"\\1",
"\"",
"&",
"<",
">",
" ",
chr(161),
chr(162),
chr(163),
chr(169),
"chr(\\1)");
$text = preg_replace ($search, $replace, $document);
//另附一段:preg_replace("'([\r\n])[\s]+'", "", $content) //去除回车
//换行符
?>
[/code]