欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

敏感词过滤-php扩展trie-filter安装使用

程序员文章站 2022-07-12 18:59:38
...

关键词过滤扩展,用于检查一段文本中是否出现敏感词,基于Double-Array Trie 树实现

一、安装libiconv

这个是libdatrie的依赖项

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz   
tar zxvf libiconv-1.14.tar.gz   
cd libiconv-1.14   
./configure   
make   
make install

二、安装libdatrie 

(http://linux.thai.net/~thep/datrie/datrie.html#Download) 这个网站下不了了,所以我把文件放在我的网站,大家可以下载

wget http://www.az1314.cn/uploads/libdatrie.gz
tar zxvf libdatrie.gz
cd libdatrie-0.2.4
./configure --prefix=/usr/local/libdatrie
make
make install

三、安装trie-filter扩展

由于官方trie_filter扩展对中文支持的不是很好,所以在git上找到了一个在官方扩展上面改写的扩展经过测试没有问题

由于该作者很忙(懒),没有做php7.0以上版本的兼容,所以找到一个修改兼容php7的版本,根据自己的php版本去对应的下载

php5.3~5.6 https://github.com/wulijun/php-ext-trie-filter

php7.0~7.1 https://github.com/zzjin/php-ext-trie-filter

git clone https://github.com/zzjin/php-ext-trie-filter
cd php-ext-trie-filter
phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-trie_filter=/usr/local/libdatrie
make 
make install

修改php.ini,然后增加一行:extension=trie_filter.so,保存配置并重启php

命令行输入php -m 查看是否扩展加进来了

四 、生成词库

由于上面下载的源码包中并没有带生成词典的命令,所以我们用php写一个函数用于生成

<?php
function dirty_words()
{
    //敏感词数组 可以录读第五部分的词库 然后生成敏感词文件
    $words = array('傻逼','艹尼玛','你妈');
    //创建一个空的trie tree
    $tire = \trie_filter_new();
    //向trie tree中添加敏感词
    foreach ($words as $k => $v) {
        trie_filter_store($tire, $v);
    }
    //生成敏感词文件
    trie_filter_save($tire,'./dirty_words.dic');

    //释放trie资源
    trie_filter_free($tire);
}

五、测试

<?php 

// 加载敏感词文件
$tire = trie_filter_load('./dirty_words.dic');

//准备要过滤的文本
$content = '傻逼草拟吗 哈哈哈';

//该函数的返回值是一个数组,第一个值为脏字出现的位置,第二个值为脏字的长度,拿到返回值后,可以用substr等函数获取脏字
$res = trie_filter_search($tire, $content);
print_r(substr($content, $res[0], $res[1])); //傻逼
print_r(str_replace($content,substr($content, $res[0], $res[1]), '****'));

//在文本中查找所有的脏字
$res = trie_filter_search_all($tire, $content);
print_r($res);

//释放trie资源
trie_filter_free($tire);

转载请注明来自小文blog,本文标题:敏感词过滤-php扩展trie-filter安装使用

相关标签: php 敏感词过滤