php检测是否存在敏感词,用于检测敏感词的 PHP 扩展
敏感词过滤是我朝程序员必须具备的一种特殊技能,随着敏感词越来越多,是时候写个扩展来快速的进行敏感词检测了
使用说明
1. 安装 libdatrie
tar zxf libdatrie-0.2.4.tar.gz
cd libdatrie-0.2.4
./configure --prefix=/usr/local
make
make install
2. 安装 trie_filter 扩展
tar zxf trie_filter-1.0.0.tar.gz
cd trie_filter-1.0.0
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
记得修改你的 php.ini 文件,启用 trie_filter 扩展。extension=trie_filter.so
3. 生成词典预处理工具(dpp.c 在 trie_filter-1.0.0 里面)
gcc -o dpp dpp.c -ldatrie
4. 生成敏感词词典
首先你需要把需要检测的敏感词写入到一个文本文件中(如:minganci.txt),每行一个敏感词,然后使用上一步生成的 dpp 程序处理这个文本文件来生成词典
./dpp txt_file_path dict_file_path
(例:./dpp /home/like/software/minganci.txt minganci.dic
出现如下错误:
./dpp: error while loading shared libraries: libdatrie.so.1: cannot open shared object file: No such file or directory
解决方法:
#vi /etc/ld.so.conf 在里面加入:/usr/local/lib
然后运行:#/sbin/ldconfig,即解决
最后再:./dpp /home/like/software/minganci.txt minganci )
5. 使用扩展
扩展接口很简单,只有两个函数:
1) trie_filter_load($path_to_dict)
用来载入词典,成功返回一个 Trie_Filter 资源句柄,失败返回 NULL
2) trie_filter_search($trie, $text)
用来检测一段文本中是否含有词典中定义的敏感词,$trie 是上一个函数返回的 Trie Filter 句柄,$text 是欲检测的文本
如果检测到敏感词则返回一个数组,数组第一个元素指出检测到的敏感词在 $text 中的偏移量,第二个元素指出该敏感词的长度(bytes)
如果没有检测到敏感词,则返回一个空数组
扩展的速度怎么样
一个字,很快!扩展的检测算法基于 Double Array Trie Tree,查找单一关键字的时间复杂度为 O(1),查找整段文本的时间复杂度为 O(n),n 为文本的长度,而且检测的速度不会因为敏感词的增加而降低。
注意事项
1. 扩展把词典和要检测的文本都当做平凡的字节流处理,因此可以无视字符集的问题。但需要注意的是词典的编码需要和检测文本的编码一致(我曾经犯过这样的错误:词典编码和文本编码不一样,生成的词典用不了),例如词典为 UTF-8 编码而你需要检测的文本为 GBK 编码,这就要求你在调用 trie_filter_search() 函数之前通过 iconv 或者 mb_xxx 函数转换一下编码
2. 目前只在 linux + php-5.2 环境下测试通过,不支持 windows,也没有支持的计划
php检测是否存在敏感词,用于检测敏感词的 PHP 扩展相关推荐
- 用于检测敏感词的 PHP 扩展
2019独角兽企业重金招聘Python工程师标准>>> 敏感词过滤是我朝程序员必须具备的一种特殊技能,随着敏感词越来越多,是时候写个扩展来快速的进行敏感词检测了 使用说明 1. 安装 ...
- 论文解读:《iRice-MS:用于检测水稻多型翻译后修饰位点的集成 XGBoost 模型》
论文解读:<iRice-MS: An integrated XGBoost model for detecting multitype post-translational modificati ...
- 3.28 推荐三个免费违禁词查询检测平台【玩赚小红书】
1.零克查词 网址:http://ci.lingke.pro/ 零克查词是专业的小红书敏感词和违规词检测工具,同时具备抖音敏感词,快手敏感词,B站敏感词检测功能,是内容创作者的内容优化必备工具. 最新 ...
- JS window对象 Navigator对象 Navigator 对象包含有关浏览器的信息,通常用于检测浏览器与操作系统的版本。...
Navigator对象 Navigator 对象包含有关浏览器的信息,通常用于检测浏览器与操作系统的版本. 对象属性: 查看浏览器的名称和版本,代码如下: <script type=" ...
- 截断骨干用于检测,YOLO-ReT开源:边缘GPU设备上的高性能检测器
作者丨happy 编辑丨极市平台 论文链接:https://arxiv.org/pdf/2110.13713.pdf 代码链接:https://github.com/prakharg24/yolore ...
- CNN结构:用于检测的CNN结构进化-分离式方法
前言: 原文链接:基于CNN的目标检测发展过程 文章有大量修改,如有不适,请移步原文. 参考文章:图像的全局特征--用于目标检测 目标的检测和定位中一个很困难的问题是,如何从数以万计的候选 ...
- 深度学习中交叉熵_深度计算机视觉,用于检测高熵合金中的钽和铌碎片
深度学习中交叉熵 计算机视觉 (Computer Vision) Deep Computer Vision is capable of doing object detection and image ...
- 检测到目标url存在内部ip地址泄露_Cendertron,动态爬虫与敏感信息泄露检测
Cendertron,动态爬虫与敏感信息泄露检测 Cendertron = Crawler + Rendertron Cendertron https://url.wx-coder.cn/HinPM ...
- softlockup检测(watchdog)原理(用于检测系统调度是否正常)
softlockup(watchdog)用于检测系统调度是否正常,即软锁的情况,当发生softlockup时,内核不能调度,但还能响应中断,对用户的表现可能为:能ping通,但无法登陆系统,无法进行正 ...
- 语言 OJ 高低位逆转_用于检测污水井内水位高低的报警器--液位开关
我国城市道路上的井盖涉及类别复杂,有雨水.污水.电信.通信.供水.供电.燃气.化粪池等类型.雨水井盖和污水井盖统称下水井盖,由于城市排水系统的不完善,一到雨季雨水井和污水井就很容易溢出来给城市居民出现 ...
最新文章
- Seata 新特性,APM 支持 SkyWalking
- 如何让Sublime Text支持ABAP7.40之后新的关键字语法高亮
- 多个css样式合并到一个“目录”css文件中
- 1350B. Orac and Models
- usr/sbin/inetd
- python三维转换教程_Python科学计算三维可视化【完结】
- 深入浅出mysql第二,mysql-深入浅出MySQL(第2版)-ITBook分享(pdf mongodb java javascript node )...
- 职场 软件实施工程师的地位以及发展前景
- 剑圣一族x8鼠标驱动v1.21加强版
- 微博清理多个百万粉丝大号:打击违规账号要命中七寸
- sfp寄存器_SFP+-光模块测试指导
- 小程序源码:拼图工具箱支持多种拼图模式制作-多玩法安装简单
- 程序员数学(23)–图形的旋转与中心对称
- 如何用营销思维做好产品运营规划?
- 网页vnc工具NoVnc
- Java SE 059 类型安全的枚举
- Oracle-1 - :超级适合初学者的入门级笔记,CRUD,事务,约束 ......
- 什么是黑帽SEO,哪些属于黑帽技术?
- SIKI学院:MySQL数据库从零到精通:二十三:课时 27 : 26-数据库的备份和恢复+课时 28 : 27-结语
- C-Lodop提示“有窗口已打开,先关闭它(持续如此请刷新页面)!”