主题
敏感词
最近国内对敏感词管理还是很严格,很多后台管理中都未提供该功能,所以 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