敏感词过滤是我朝程序员必须具备的一种特殊技能,随着敏感词越来越多,是时候写个扩展来快速的进行敏感词检测了

使用说明

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 扩展相关推荐

  1. 用于检测敏感词的 PHP 扩展

    2019独角兽企业重金招聘Python工程师标准>>> 敏感词过滤是我朝程序员必须具备的一种特殊技能,随着敏感词越来越多,是时候写个扩展来快速的进行敏感词检测了 使用说明 1. 安装 ...

  2. 论文解读:《iRice-MS:用于检测水稻多型翻译后修饰位点的集成 XGBoost 模型》

    论文解读:<iRice-MS: An integrated XGBoost model for detecting multitype post-translational modificati ...

  3. 3.28 推荐三个免费违禁词查询检测平台【玩赚小红书】

    1.零克查词 网址:http://ci.lingke.pro/ 零克查词是专业的小红书敏感词和违规词检测工具,同时具备抖音敏感词,快手敏感词,B站敏感词检测功能,是内容创作者的内容优化必备工具. 最新 ...

  4. JS window对象 Navigator对象 Navigator 对象包含有关浏览器的信息,通常用于检测浏览器与操作系统的版本。...

    Navigator对象 Navigator 对象包含有关浏览器的信息,通常用于检测浏览器与操作系统的版本. 对象属性: 查看浏览器的名称和版本,代码如下: <script type=" ...

  5. 截断骨干用于检测,YOLO-ReT开源:边缘GPU设备上的高性能检测器

    作者丨happy 编辑丨极市平台 论文链接:https://arxiv.org/pdf/2110.13713.pdf 代码链接:https://github.com/prakharg24/yolore ...

  6. CNN结构:用于检测的CNN结构进化-分离式方法

    前言: 原文链接:基于CNN的目标检测发展过程       文章有大量修改,如有不适,请移步原文. 参考文章:图像的全局特征--用于目标检测 目标的检测和定位中一个很困难的问题是,如何从数以万计的候选 ...

  7. 深度学习中交叉熵_深度计算机视觉,用于检测高熵合金中的钽和铌碎片

    深度学习中交叉熵 计算机视觉 (Computer Vision) Deep Computer Vision is capable of doing object detection and image ...

  8. 检测到目标url存在内部ip地址泄露_Cendertron,动态爬虫与敏感信息泄露检测

    Cendertron,动态爬虫与敏感信息泄露检测 Cendertron = Crawler + Rendertron Cendertron https://url.wx-coder.cn/HinPM ...

  9. softlockup检测(watchdog)原理(用于检测系统调度是否正常)

    softlockup(watchdog)用于检测系统调度是否正常,即软锁的情况,当发生softlockup时,内核不能调度,但还能响应中断,对用户的表现可能为:能ping通,但无法登陆系统,无法进行正 ...

  10. 语言 OJ 高低位逆转_用于检测污水井内水位高低的报警器--液位开关

    我国城市道路上的井盖涉及类别复杂,有雨水.污水.电信.通信.供水.供电.燃气.化粪池等类型.雨水井盖和污水井盖统称下水井盖,由于城市排水系统的不完善,一到雨季雨水井和污水井就很容易溢出来给城市居民出现 ...

最新文章

  1. Seata 新特性,APM 支持 SkyWalking
  2. 如何让Sublime Text支持ABAP7.40之后新的关键字语法高亮
  3. 多个css样式合并到一个“目录”css文件中
  4. 1350B. Orac and Models
  5. usr/sbin/inetd
  6. python三维转换教程_Python科学计算三维可视化【完结】
  7. 深入浅出mysql第二,mysql-深入浅出MySQL(第2版)-ITBook分享(pdf mongodb java javascript node )...
  8. 职场 软件实施工程师的地位以及发展前景
  9. 剑圣一族x8鼠标驱动v1.21加强版
  10. 微博清理多个百万粉丝大号:打击违规账号要命中七寸
  11. sfp寄存器_SFP+-光模块测试指导
  12. 小程序源码:拼图工具箱支持多种拼图模式制作-多玩法安装简单
  13. 程序员数学(23)–图形的旋转与中心对称
  14. 如何用营销思维做好产品运营规划?
  15. 网页vnc工具NoVnc
  16. Java SE 059 类型安全的枚举
  17. Oracle-1 - :超级适合初学者的入门级笔记,CRUD,事务,约束 ......
  18. 什么是黑帽SEO,哪些属于黑帽技术?
  19. SIKI学院:MySQL数据库从零到精通:二十三:课时 27 : 26-数据库的备份和恢复+课时 28 : 27-结语
  20. C-Lodop提示“有窗口已打开,先关闭它(持续如此请刷新页面)!”

热门文章

  1. Swift iOS HealthKit 使用案例: 获取体温列表 HKHealthStore
  2. 镜像翻转_《蒙娜丽莎》镜像翻转后,暗藏神秘的第二张脸?网友:笑容消失了...
  3. java 核心API day05 File类
  4. 双方确认函_确认函格式范文
  5. AutoCAD二次开发——引线标注
  6. android 电视 刷机,康佳电视通用刷机救砖教程分享
  7. 阿里巴巴大数据计算平台MaxCompute全套攻略
  8. 常见的文件后缀名大全
  9. 分析内网即时通讯软件安全性如何
  10. 数据库迁移的几种方式