anxu/sensitive

在文本中过滤或替换敏感词

v1.0.0 2019-06-11 06:50 UTC

This package is auto-updated.

Last update: 2024-09-12 13:27:18 UTC


README

基于DFA算法,实现敏感词的判断和过滤

安装

推荐通过 composer 安装此扩展。

运行以下命令之一:

php composer.phar require --prefer-dist anxu/sensitive "*"

或将以下内容添加到您的 composer.json 文件的 require 部分:

"anxu/sensitive": "*"

用法

1. 将敏感词转换为二维节点数组

$words=[
    '苹果',
    '香蕉'
];
$nodes =  Utils::words2Node($words);

//[
//    [
//        Node('苹', false),
//        Node('果', true)
//    ],
//    [
//        Node('香', false),
//        Node('蕉', true)
//    ],
//]

2. 构建字典树

$tree = new Tree($nodes);
// $tree = new Tree();
// $tree->appendMultiple($nodes)

3. 创建敏感词处理类,处理文本

$sensitive = new SensitiveWords($tree);
//$sensitive = new SensitiveWords();
//$sensitive->setTree($tree);

$text = '苹果正好吃,我不爱吃香蕉, 香梨才是王道,香水有毒';
//如果文本包含敏感词,则返回包含的敏感词数组;否则返回false
$res = $sensitive->has($text);

//用指定字符,替换文本中敏感词
$string = $sensitive->filter($text,'#');

例子

//敏感词数组;
$words=['苹果','香蕉'];

$nodes =  Utils::words2Node($words);
$tree = new Tree($nodes);
//如果敏感词数量比较大,字典树构建会比较慢,建议将构建好的字典树进行缓存
$sensitive = new SensitiveWords($tree);

$text = '苹果正好吃,我不爱吃香蕉, 香梨才是王道,香水有毒';
$res = $sensitive->has($text);
$string = $sensitive->filter($text,'#');