/**
* @todo 敏感词过滤,返回结果
* @param array $list 定义敏感词一维数组
* @param string $string 要过滤的内容
* @return string $log 处理结果
*/
function sensitive($string){
$m_sensitive = Db::name("sensitive");
$list = $m_sensitive->order("id desc")->column("name");
$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),'*')); //把匹配到的数组进行合并,替换使用
foreach ($replaceArray as $i => $v) {
$count = mb_strlen($i,"utf-8");
$replaceArray[$i] = str_repeat($v,$count);
}
$stringAfter = strtr($string, $replaceArray); //结果替换
}else{
$stringAfter = $string;
}
return $stringAfter;
}