PS:原创文章,如需转载,请注明出处,谢谢!
本文地址:http://flyer0126.iteye.com/blog/1931212
早就想研究下敏感词过滤问题,今天有些时间,正好实践一下。
1. 安装:libdatrie (http://linux.thai.net/~thep/datrie/datrie.html#Download)
tar zxf libdatrie-0.2.4.tar.gz cd libdatrie-0.2.4 ./configure --prefix=/usr/local make make install
2. 安装 trie_filter 扩展 (https://code.google.com/p/as3chat/downloads/detail?name=trie_filter-2011-03-21.tar.gz)
tar zxf trie_filter-2011.03.21.tar.gz cd trie_filter-2011.03.21 phpize (#/usr/local/php/bin/phpize ) ./configure --with-php-config=/usr/local/php/bin/php-config make make install
3. 修改 php.ini 文件,添加 trie_filter 扩展:extension=trie_filter.so,重启PHP。
查看phpinfo发现trie_filter 扩展可用,如下图所示:
4. 生成敏感词词典 (dpp 在 trie_filter-1.0.0 里面)
将需要检测的敏感词写入一文本文件(如:mgc.txt),每行一个敏感词,然后使用dpp处理文本文件生成词典。
规则:./dpp txt_file_path dict_file_path
示例:./dpp ~/mgc.txt mgc.dic
5. 应用
<?php /** * trie_filter 敏感词过滤示例 * * @author flyer0126 * @since 2013/08/26 **/ // 载入词典,成功返回一个 Trie_Filter 资源句柄,失败返回 NULL $file = trie_filter_load('/usr/local/src/trie_filter/mgc.dic'); var_dump($file); $str1 = '今天利用trie_filter做敏感词过滤示例'; $str2 = '今天利用trie_filter做过滤示例'; // 检测文本中是否含有词典中定义的敏感词(假设敏感词设定为:‘敏感词’) $res1 = trie_filter_search($file, $str1); $res2 = trie_filter_search($file, $str2); echo $res1 ? '存在敏感词' : '不存在敏感词'; echo "<br/>"; echo $res2 ? '存在敏感词' : '不存在敏感词'; /** resource(1) of type (Trie tree filter) 存在敏感词 不存在敏感词 **/
对应 libdatrie-0.2.4.tar.gz 及 trie_filter-2011-03-21.tar.gz 已添加至附件中,有兴趣的可以拿走~
相关推荐
总的来说,`trie_filter`是PHP在Linux环境中进行高效敏感词过滤的重要工具,结合了词库管理和Trie树的高效搜索特性,能够帮助开发者快速实现文本的审查和过滤功能。在使用过程中,理解其工作原理和正确配置是至关...
php扩展:trie_filter 过滤敏感词。1.生成敏感词文件,2.加载使用敏感词库,3.查找敏感词。可以循环查找替换,最后输出替换后的文本
"用于检测敏感词的 PHP 扩展"就是针对这一需求而设计的,它是一个名为trie_filter的PHP扩展,主要功能是快速有效地检测和过滤用户输入中的敏感词汇。 trie_filter扩展基于字典树(Trie)数据结构,字典树是一种高效...
总之,CodeIgniter的辅助函数为敏感词过滤提供了便利,通过自定义的`filter_helper.php`,我们可以构建适合自己项目需求的过滤机制。然而,随着需求的复杂性增加,可能需要结合其他数据结构和算法来提高过滤的准确性...
关键词过滤扩展,用于检查一段文本中是否出现敏感词,基于 Double-Array Trie 树实现。 依赖环境 PHP 7 + libdatrie (Version >= 0.2.4) 安装 因为本项目依赖于 libdatrie, 所以需要先安装 , 再安装本扩展。 $ wget ...