• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php关键字过滤

php 搞代码 3年前 (2022-01-22) 24次浏览 已收录 0个评论

本篇文章给大家分享的内容是php关键字过滤 ,有着一定的参考价值,有需要的朋友可以参考一下

<?phpclass TrieTree{    public $tree = array('我','过');    /**     * 增加关键词到字典树     *     * @param string $utf8_str                 */    public function add($utf8_str)    {        $chars = &UTF8Util::getChars($utf8_str);        // 串结尾字符        $chars[] = null;        $count = count($chars);        $T = &$this->tree;        for ($i = 0; $i < $count; $i ++) {            $c = $chars[$i];            if (! array_key_exists($c, $T)) {                // 插入新字符,关联数组                $T[$c] = array();            }            $T = &$T[$c];        }        return $this;    }    /**     * 从字典树移除关键词     *     * @param string $utf8_str                 */    public function remove($utf8_str)    {        $chars = &UTF8Util::getChars($utf8_str);        $chars[] = null;        // 先保证此串在树中        if ($this->_find($chars)) {            $chars[] = null;            $count = count($chars);            $T = &$this->tree;            for ($i = 0; $i < $count; $i ++) {                $c = $chars[$i];                // 表明仅有此串                if (count($T[$c]) == 1) {                    unset($T[$c]);                    return;                }                $T = &$T[$c];            }        }        return $this;    }    /**     * 从字典树查找关键词     *     * @param string $utf8_str                 * @return boolean     */    public function exists($utf8_str)    {        $chars = &UTF8Util::getChars($utf8_str);        $chars[] = null;        return $this->_find($chars);    }    private function _find(&$chars)    {        $count = count($chars);        $T = &$this->tree;        for ($i = 0; $i < $count; $i ++) {            $c = $chars[$i];            if (! array_key_exists($c, $T)) {                return false;            }            $T = &$T[$c];        }        return true;    }    /**     * 是否含有关键词     *     * @param string $utf8_str                 * @param boolean $do_count                 * @return boolean|number     */    public function contain($utf8_str, $do_count = false)    {        $chars = &UTF8Util::getChars($utf8_str);        $chars[] = null;        $len = count($chars);        $Tree = &$this->tree;        $count = 0;        for ($i = 0; $i < $len; $i ++) {            $c = $chars[$i];            // 起始字符匹配            if (array_key_exists($c, $Tree)) {                $T = &$Tree[$c];                for ($j = $i + 1; $j < $len; $j ++) {                    $c = $chars[$j];                    if (array_key_exists(null, $T)) {                        if ($do_count) {                            $count ++;                        } else {                            return true;                        }                    }                    if (! array_key_exists($c, $T)) {                        break;                    }                    $T = &$T[$c];                }            }        }        return $do_count ? $count : false;    }    /**     * 批量检查是否包含关键词     *     * @param array $str_array                 * @return boolean     */    public function containMulti($str_array)    {        if (\is_array($str_array)) {            foreach ($str_array as $str) {                if ($this->contain($str)) {                    return true;                }            }        }        return false;    }    /**     * 导出序列化后的字典树     *     * @return string     */    public function export()    {        return serialize($this->tree);    }    /**     * 导入序列化后的字典树     *     * @param string $str                 */    public function import($str)    {        $this->tree = unserialize($str);    }}class UTF8Util{    public static function getChars($utf8_str)    {        $s = $utf8_str;        $len = strlen($s);        if ($len == 0)            return array();        $chars = array();        for ($i = 0; $i < $len; $i ++) {            $c = $s[$i];            $n = ord($c);            // 0xxx xxxx, asci, single            if (($n >> 7) == 0) {                $chars[] = $c;            } else                 // 1111 xxxx, first in four char                if (($n >> 4) == 15) {                    if ($i < $len - 3) {                        $chars[] = $c . $s[$i + 1] . $s[$i + 2] . $s[$i +<strong>*本文来@源gao@daima#com搞(%代@#码@网2</strong><pre>搞代gaodaima码

3]; $i += 3; } } else // 111x xxxx, first in three char if (($n >> 5) == 7) { if ($i < $len – 2) { $chars[] = $c . $s[$i + 1] . $s[$i + 2]; $i += 2; } } else // 11xx xxxx, first in two char if (($n >> 6) == 3) { if ($i < $len – 1) { $chars[] = $c . $s[$i + 1]; $i ++; } } } return $chars; }}$utf8_str = new UTF8Util();$utf_char = $utf8_str->getChars('佛教飞机撒方式的回复回复后我我认为回复日无法核实的回复我五花肉覅福热火么光和热规划局狂热韩国关乎二后过过过过过过过群军过军若绿可我让我陪我二骗人富可敌国及时来构架了');

相关推荐:

PHP关键字标红处理类

以上就是php关键字过滤 的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php关键字过滤
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址