A-A+
PHP过滤html网页标记
在PHP留言本或PHP评论系统中,往往需要过滤掉HTML标记,去掉JAVASCRIP等,以防范PHP的跨站攻击,除了需要将防客的留言信息经过处理外,有时候还需要对留言信息进行处理,比如去除回车和换行符等,下面是一个PHP的范例,利用了数组的形式将要去除的网页标记包含进来,然后通过 PHP 的替换函数 preg_replace 进行过滤,另附去除回车换行符的代码,其实质原理都是一样的,都是通过查找相应的标记进行替换操作,以达到过滤的目的。
<?php // $document 应包含一个 HTML 文档。 // 本例将去掉 HTML 标记,javascript 代码 // 和空白字符。还会将一些通用的 // HTML 实体转换成相应的文本。 $search = array ("'<script[^>]*?>.*?</script>'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) //去除回车 //换行符 ?>