238 Warning:preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instea

本文来自:邯郸贾氏!

先看一下这个https://www.jb51.net/article/84452.htm

function filterHtml($content)
    {
        $search = array("'<script[^>]*?>.*?</script>'si",  // 去掉 javascript
            "'<[\/\!]*?[^<>]*?>'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",
            "'&ldquo;'i",
            "'&rdquo;'i"
        );

        $replace = array("",
            "",
            "\\1",
            "\"",
            "&",
            "<",
            ">",
            " ",
            chr(161),
            chr(162),
            chr(163),
            chr(169),
            "chr(\\1)",
            "‘",
            "’"
        );
        $filterHtml = preg_replace($search, $replace, $content, -1);
        return $filterHtml;
    }

如果是数组还会报错

只能把带e的单独拿出来重新使用 preg_replace_callback()

function filterHtml($content)
    {
        $search = array("'<script[^>]*?>.*?</script>'si",  // 去掉 javascript
            "'<[\/\!]*?[^<>]*?>'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",
            "'&ldquo;'i",
            "'&rdquo;'i"
        );

        $replace = array("",
            "",
            "\\1",
            "\"",
            "&",
            "<",
            ">",
            " ",
            chr(161),
            chr(162),
            chr(163),
            chr(169),
            "‘",
            "’"
        );
        $matches = "\\1";
        $filterHtml = preg_replace($search, $replace, $content, -1);
        $filterHtml = preg_replace_callback("'&#(\d+);'", function($matches){
            return chr($matches[1]);
        }, $filterHtml, -1);
        return $filterHtml;
    }

猜你喜欢

转载自blog.csdn.net/phpstory/article/details/109473961