首页 >php教程 >php手册 >php中html字符串过滤函数详解

php中html字符串过滤函数详解

WBOY
WBOY原创
2016-05-25 16:49:311107浏览

在php中过滤html字符串的方法有很多,如果我们使用系统自带的可能不适合于提交表单类数据了,如果用自定的相对会好处理一些,下面我介绍了一些方法大家可参考参考。

自定义的一个函数

<?php
function StripHTML($string) {
    $pattern = array(
        "&#39;<script[^>]*?>.*?</script>&#39;si",
        "&#39;<style[^>]*?>.*?</style>&#39;si",
        "&#39;<[/!]*?[^<>]*?>&#39;si",
        "&#39;([rn])[s]+&#39;",
        "&#39;&(quot|#34);&#39;i",
        "&#39;&(amp|#38);&#39;i",
        "&#39;&(lt|#60);&#39;i",
        "&#39;&(gt|#62);&#39;i",
        "&#39;&(nbsp|#160);&#39;i",
        "&#39;&(iexcl|#161);&#39;i",
        "&#39;&(cent|#162);&#39;i",
        "&#39;&(pound|#163);&#39;i",
        "&#39;&(copy|#169);&#39;i",
        "&#39;&#(d+);&#39;e"
    );
    $replace = array(
        &#39;&#39;,
        &#39;&#39;,
        "1",
        &#39;&#39;,
        "&",
        "<",
        ">",
        &#39; &#39;,
        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 != &#39;argc&#39; && $key != &#39;argv&#39; && (strtoupper($key) != $key || &#39;&#39; . 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(&#39;/&#39;, "", $str);
    $str = str_replace("", "", $str);
    $str = str_replace("&gt", "", $str);
    $str = str_replace("&lt", "", $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("&#39;", chr(39) , $str);
    $str = str_replace("<br />", chr(13) , $str);
    $str = str_replace("&#39;&#39;", "&#39;", $str);
    $str = str_replace("css", "&#39;", $str);
    $str = str_replace("CSS", "&#39;", $str);
    return $str;
}
?>

使用方法

引用是直接这样:

$xxx = htmlspecialchars($_POST['xxx']);

或者

$xxx = htmlspecialchars($_GET['xxx']);


文章地址:

转载随意^^请带上本文地址!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn