数据库 - Model 前置说明
官方开源项目 抓取代理IP

介绍

敏感词检测,从v2.5.12版本起支持,依赖\x\SensitiveWord组件。

该组件使用DFA算法实现,经调试 5W敏感词,检测完成只需要0.0005s耗时。

初始化时自动载入词库

可以在/config/words.php配置文件中设置词库列表,框架会在启动前自动载入相应的词库。

例如:

return [
    // +----------------------------------------------------------------------
    // | 敏感词配置
    // +----------------------------------------------------------------------
    
    // 敏感词文件列表,需要使用ROOT_APTH常量
    'sensitive_file_list' => [
        [
            'path' => ROOT_PATH.'public/word/1.txt', // 词库文件
            'char' => false, // 敏感词分隔符,false表示换行分隔
        ],
        [
            'path' => ROOT_PATH.'public/word/2.txt',
            'char' => '|',
        ],
    ],
];

手动载入词库[数组]

依赖类:\x\SensitiveWord
方法名:set_tree_array()
返回值:this

参数:

  • array $list

    • 功能:词库,可以是一维/二维数组
    • 默认值:无
  • string $field

    • 功能:二维数组时的键名
    • 默认值false

使用示例:

// 导入一维数组
\x\SensitiveWord::set_tree_array([
    '大大1',
    '大大2',
    '大大3',
]);
// 导入二维数组,一般用于数据库读取载入
\x\SensitiveWord::set_tree_array([
    ['word' => '牛牛1'],
    ['word' => '牛牛2'],
    ['word' => '牛牛3'],
], 'word');

手动载入词库[单条]

依赖类:\x\SensitiveWord
方法名:set_tree_string()
返回值:this

参数:

  • string $word

    • 功能:词库
    • 默认值:无

使用示例:

\x\SensitiveWord::set_tree_array('小黄牛');

获取包含的敏感词

依赖类:\x\SensitiveWord
方法名:exec()
返回值:array

参数:

  • string $content

    • 功能:待检测内容
    • 默认值:无
  • int $wordNum

    • 功能:需要获取的敏感词数量,0表示获取全部
    • 默认值0

使用示例:

$cotent = '小黄牛 今天上了澳门赌网!';
// 获取包含的敏感词
var_dump(\x\SensitiveWord::exec($content));
var_dump(\x\SensitiveWord::exec($content, 1));

// 输出
[
    "小黄牛",
    "赌网"
]
[
    "小黄牛"
]

替换敏感词

依赖类:\x\SensitiveWord
方法名:replace()
返回值:string

参数:

  • string $content

    • 功能:待替换的内容
    • 默认值:无
  • string $char

    • 功能:替换的字符
    • 默认值:无
  • bool $repeat

    • 功能:是否需要按敏感词长度进行占位替换,false表示只替换一个字符
    • 默认值false

使用示例:

$cotent = '小黄牛 今天上了澳门赌网!';
// 替换敏感词
var_dump(\x\SensitiveWord::replace($content, '*'));
var_dump(\x\SensitiveWord::replace($content, '*', true));

// 输出
* 今天上了澳门*!
*** 今天上了澳门**!

标记敏感词

依赖类:\x\SensitiveWord
方法名:mark()
返回值:string

参数:

  • string $content

    • 功能:待标记的内容
    • 默认值:无
  • string $leftTag

    • 功能:标记左边字符串
    • 默认值:无
  • string $rightTag

    • 功能:标记右边字符串
    • 默认值:无

使用示例:

$cotent = '小黄牛 今天上了澳门赌网!';
// 标记敏感词
var_dump(\x\SensitiveWord::mark($content, '“', '”'));

// 输出
“小黄牛” 今天上了澳门“赌网”!

检测是否不包含敏感词

依赖类:\x\SensitiveWord
方法名:is_legal()
返回值:bool

参数:

  • string $content

    • 功能:待检测的内容
    • 默认值:无

使用示例:

$cotent = '小黄牛 今天上了澳门赌网!';
// 是否合法
var_dump(\x\SensitiveWord::is_legal($content));

// 输出
false

获取当前词库数量

依赖类:\x\SensitiveWord
方法名:count()
返回值:int
参数:无

使用示例:

\x\SensitiveWord::count();

清空当前词库

依赖类:\x\SensitiveWord
方法名:reset()
返回值:
参数:无

使用示例:

\x\SensitiveWord::reset();

敏感词下载


SW-X提供了一个较全的敏感词测试词库,可点击按钮进行下载:敏感词.zip

SW-X

企业级 - 高性能 PHP 框架

最后更新:3年前 . 作者-小黄牛

本篇目录