A-A+

PHP过滤html网页标记

2012年06月29日 PHP技术文章 暂无评论 阅读 63 views 次

在PHP留言本或PHP评论系统中,往往需要过滤掉HTML标记,去掉JAVASCRIP等,以防范PHP的跨站攻击,除了需要将防客的留言信息经过处理外,有时候还需要对留言信息进行处理,比如去除回车和换行符等,下面是一个PHP的范例,利用了数组的形式将要去除的网页标记包含进来,然后通过 PHP 的替换函数 preg_replace 进行过滤,另附去除回车换行符的代码,其实质原理都是一样的,都是通过查找相应的标记进行替换操作,以达到过滤的目的。

<?php     
// $document 应包含一个 HTML 文档。     
// 本例将去掉 HTML 标记,javascript 代码     
// 和空白字符。还会将一些通用的     
// HTML 实体转换成相应的文本。     
     
$search = array ("'<script&#91;^>]*?>.*?</script>'si",//去掉 javascript
                 "'<&#91;\/\!&#93;*?&#91;^<>]*?>'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) //去除回车
//换行符  
?>
标签:

给我留言