一个基于DFA算法的敏感词过滤插件
- 例用
单利模式,保持整个项目实例一致 - 导入敏感词文本采用yield生成器
降低内存 - 支持数组和
文件导入两种方式添加敏感词,自定义文件导入时的敏感词分割符 - 支持添加
干扰因子来增强敏感词的识别能力 - 自定义符号
标记敏感词 内置server,适用于api方式调用匹配模式模式分为最大最小两种,默认最小匹配模式检测词语是否是敏感词检测文本是否包含敏感词过滤文本中的敏感词单元测试覆盖率高
PHP >= 5.5.0
git clone https://github.com/herepy/dfa-filter.git
cd dfa-filter && composer install
composer require pengyu/dfa-filter
use Pengyu\DfaFilter\Filter;
require_once "vendor/autoload.php";
$filer=Filter::build();$filter=Filter::build();
$filter->addSensitives(["测试","良好","通过"]);
$filter->importSensitiveFile("words.txt");$filter->addDisturbance("@");
$filter->addDisturbance(["?","%"]);$filter->isKey("测试呀");
$filter->isKey("测试");
$filter->isKey("@测?试");$filter->check("测试呀");
$filter->check("测试通?过了啊,感觉良?好%");
$filter->check("这次通不过了呀");$filter->filter("测试了一下,看看能不能@@通%%过了","^",Filter::DFA_MAX_MATCH);
$filter->filter("简单的内容测?试,有敏感词");
$filter->filter("有很?多测@@试?的词,能?不能良%好?通??%过呢");$filter->mark("这里有一个敏感词通过,看看测@试%会不会过");
$filter->mark("这里有一个敏感词通过,看看测@试%会不会过",["<span>","</span>"],Filter::DFA_MAX_MATCH);$filter->flushSensitives();
$filter->flushDisturbance();$filter->getSensitivesTree();
$filter->getDisturbance();php run.phpcurl -H "Content-Type: application/json" -X POST -d '{"action": "isKey", "data":{"word":"敏感词"} }'