敏感词的过滤方法
/ @todo 敏感词过滤,返回结果 @param array $list 定义敏感词一维数组 @param string $string 要过滤的内容 @return string $log 处理结果 /function sensitive($list, $string){ $count = 0; //违规词的个数 $sensitiveWord = ''; //违规词 $stringAfter = $string; //更换后的内容 $pattern = \公众/\"大众.implode(\公众|\"大众,$list).\"大众/i\"大众; //定义正则表达式 if(preg_match_all($pattern, $string, $matches)){ //匹配到了却果 $patternList = $matches[0]; //匹配到的数组 $count = count($patternList); $sensitiveWord = implode(',', $patternList); //敏感词数组转字符串 $replaceArray = array_combine($patternList,array_fill(0,count($patternList),'')); //把匹配到的数组进行合并,更换利用 $stringAfter = strtr($string, $replaceArray); //结果更换 } $log = \公众原句为 [ {$string} ]<br/>\"大众; if($count==0){ $log .= \"大众暂未匹配到敏感词!
\"大众; }else{ $log .= \"大众匹配到 [ {$count} ]个敏感词:[ {$sensitiveWord} ]<br/>\"大众. \"大众更换后为:[ {$stringAfter} ]\"大众; } return $log;}
调用方法
function testAction(){ $string = 'likeyou小白喜好小黑爱着的大黄'; //要过滤的内容 $list = ['小明', '小红', '大白', '小白', '小黑', 'me', 'you']; //定义敏感词数组 $result = $this->sensitive($list, $string); echo ($result); die; //打印结果: / 原句为 [ likeyou小白喜好小黑爱着的大黄 ] 匹配到 [ 3 ]个敏感词:[ you,小白,小黑 ] 更换后为:[ like喜好爱着的大黄 ] /}
大家有别的方法,不妨留言,一起互换一下
点击理解更多去学习:非常利用的代码优化,怎么才能写好代码