Skip to content

敏感词

最近国内对敏感词管理还是很严格,很多后台管理中都未提供该功能,所以 CatchAdmin 后台就增加了这个功能模块, 采用了常见 DFA 算法提高查找性能。

如何使用

在后台管理中,系统模块下的敏感词模块添加所需要屏蔽的敏感词。但并不是说非得使用库的形式,下面会提到为什么不需要这么做。

CatchAdmin 提供了 catcher\library\Trie 扩展来增加你的敏感词库。来看一下代码。

$words = SensitiveWord::cursor();

$trie = new Trie();

foreach ($words as $word) {
    $trie->add($word->word);
}

// 获取 trie tree
$trie->getTries();

// 缓存
$trie->cached();

从词库里面获取到敏感词之后,添加到 Trie Tree 里面。CatchAdmin 已经封装好了好了整个过程。所以可以轻松使用。

WARNING

trie 缓存使用的是 Redis,无法切换,所以请使用 cached 方法时请链接 Redis,否则请自己选择使用 Cache 进行缓存

获取内容敏感词

getSensitiveWords 方法可以获取到内容里面存在的敏感词汇

$tire->getSensitiveWords($trieTree, $content);

替换

replace 方法可以替换到内容里面存在的敏感词。

$tire->replace($words, $content);

验证

CatchAdmin 还提供了验证器sensitive_word,可以验证提交内容中是否存在敏感词.

[
    'word' => 'sensitive_word',
]

命令

针对敏感词库,Catchadmin 提供了缓存命令,也是使用 Redis 缓存

php think cache:sensitiveWord