PHP 实现敏感词 / 停止词 过滤(附敏感词库)PHP实现了敏感词/停用词过滤(带敏感词库),过滤敏感单词和字符是网站,的一项基本功能,因此有必要设计一个好的、高效的过滤算法。在敏感词过滤算法中,必须减少计算量,而DFA算法中几乎没有计算量,只有状态转移。因此,需要DFA算法来更高效地过滤敏感词。
整理过滤函数代码如下:
/**
*注意:[多过滤词过滤字符中的敏感词]
*AuthorHeZe
*日期2021/1/614:48
*@param$list一维数组过滤词[‘小明’,’小红’,’大白’,’小白’,’小黑’,’我’,’你’];
*@param$string输入文本,就像小白喜欢小黑喜欢的大黄一样
*@returnstring过滤后的单词,如**喜欢*喜欢大黄
*/
functionDoFilterWords($list,$string,$symbol=’* ‘)
{
$ count=0;//非法字数
$敏感词=’ ‘;//非法词语
$ stringAfter=$ string//替换后的内容
$pattern=’/’。内爆(‘ | ‘,$list)。/I ‘;//定义正则表达式
If (preg _ match _ all ($ pattern,$ string,$ matches)){//匹配结果
$ PatternList=$ matches[0];//数组匹配到
$ count=count($ patternList);
$敏感词=内爆(‘,’,$ patternList);//将敏感词数组转换为字符串
//合并匹配的数组并替换它们
$ replace array=array _ combine($ patternList,array_fill(0,count($patternList),$ symbol));
$stringAfter=strtr($string,$ ReplaceArray);//结果替换
}
$log=’原句是[{ $ string }]br/’;
if($count==0){
$log。=’敏感词尚未匹配!’;
}else{
$log。=’匹配[{$count}]个敏感词:[{ $敏感词}]br/’。替换为:[{ $ StringAfter }]’;
}
返回$ log
}使用方法
//筛选同义词库
$list=[‘小明’,’小红’,’大白’,’小白’,’小黑’,’我’,’你’];
//输入文本
$string=’喜欢你小白喜欢小黑爱吃的大黄’;
//调用函数
$res=DoFilterWords($list,$string,’ *);
echo $ res
//输出结果
原句是[喜欢你小白喜欢小黑爱吃的大黄]
[3]敏感词搭配:[你,小白,小黑]
替换为:[喜欢**喜欢*爱大黄]
最后 附上敏感词、停止词 词库:https://gitee.com/zehe/stopwords
转载请注明出处~ ~ ~ ~ ~