Heim  >  Artikel  >  php教程  >  php中html字符串过滤函数详解

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

WBOY
WBOYOriginal
2016-05-25 16:49:311092Durchsuche

在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="" alt="php中html字符串过滤函数详解 " >之外的所有html标签,则可以这样写:
 代码如下复制代码
strip_tags(string,"<img  alt="php中html字符串过滤函数详解 " >");
过滤除了<img  src="" alt="php中html字符串过滤函数详解 " ><p>xxx</p><b></b>之外的所有html标签,则可以这样写:
 代码如下复制代码
strip_tags(string,"<img  alt="php中html字符串过滤函数详解 " ><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']);


文章地址:

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn