在php中过滤html字符串的方法有很多,如果我们使用系统自带的可能不适合于提交表单类数据了,如果用自定的相对会好处理一些,下面我介绍了一些方法大家可参考参考。
自定义的一个函数
<?php function StripHTML($string) { $pattern = array( "'<script[^>]*?>.*?</script>'si", "'<style[^>]*?>.*?</style>'si", "'<[/!]*?[^<>]*?>'si", "'([rn])[s]+'", "'&(quot|#34);'i", "'&(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" ); $replace = array( '', '', "1", '', "&", "<", ">", ' ', chr(161) , chr(162) , chr(163) , chr(169) , "chr(1)" ); return preg_replace($pattern, $replace, $str); } ?> 除了上面自定的函数之外还有一个php自带的过滤html的函数:strip_tags(string) 这样就可以过滤掉所有的html标签了。 如果想过滤掉除了<img src="">之外的所有html标签,则可以这样写: 代码如下复制代码 strip_tags(string,"<img>"); 过滤除了<img src=""><p>xxx</p><b></b>之外的所有html标签,则可以这样写: 代码如下复制代码 strip_tags(string,"<img><p><b>"); 网上找到一个防sql注入函数 <?php //php 批量过滤post,get敏感数据 if (get_magic_quotes_gpc()) { $_GET = stripslashes_array($_GET); $_POST = stripslashes_array($_POST); } function stripslashes_array(&$array) { while (list($key, $var) = each($array)) { if ($key != 'argc' && $key != 'argv' && (strtoupper($key) != $key || '' . intval($key) == "$key")) { if (is_string($var)) { $array[$key] = stripslashes($var); } if (is_array($var)) { $array[$key] = stripslashes_array($var); } } } return $array; } //-------------------------- // 替换HTML尾标签,为过滤服务 http://www.phprm.com //-------------------------- function lib_replace_end_tag($str) { if (empty($str)) return false; $str = htmlspecialchars($str); $str = str_replace('/', "", $str); $str = str_replace("", "", $str); $str = str_replace(">", "", $str); $str = str_replace("<", "", $str); $str = str_replace("<SCRIPT>", "", $str); $str = str_replace("</SCRIPT>", "", $str); $str = str_replace("<script>", "", $str); $str = str_replace("</script>", "", $str); $str = str_replace("select", "select", $str); $str = str_replace("join", "join", $str); $str = str_replace("union", "union", $str); $str = str_replace("where", "where", $str); $str = str_replace("insert", "insert", $str); $str = str_replace("delete", "delete", $str); $str = str_replace("update", "update", $str); $str = str_replace("like", "like", $str); $str = str_replace("drop", "drop", $str); $str = str_replace("create", "create", $str); $str = str_replace("modify", "modify", $str); $str = str_replace("rename", "rename", $str); $str = str_replace("alter", "alter", $str); $str = str_replace("cas", "cast", $str); $str = str_replace("&", "&", $str); $str = str_replace(">", ">", $str); $str = str_replace("<", "<", $str); $str = str_replace(" ", chr(32) , $str); $str = str_replace(" ", chr(9) , $str); $str = str_replace(" ", chr(9) , $str); $str = str_replace("&", chr(34) , $str); $str = str_replace("'", chr(39) , $str); $str = str_replace("<br />", chr(13) , $str); $str = str_replace("''", "'", $str); $str = str_replace("css", "'", $str); $str = str_replace("CSS", "'", $str); return $str; } ?>
使用方法
引用是直接这样:
$xxx = htmlspecialchars($_POST['xxx']);
或者
$xxx = htmlspecialchars($_GET['xxx']);
文章地址:
转载随意^^请带上本文地址!