php中html字符串过滤函数详解
在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']);
文章地址:http://www.phprm.com/develop/57391.html
转载随意^^请带上本文地址!