敏感字过滤

function filterWords($content,$file='./Public/swords.txt'){
$len = mb_strlen($content);
if($len==0){
return true;
}
        mb_internal_encoding('utf-8');  //内部编码改为utf8
        $keywords=array_unique(explode(',',file_get_contents($file)));
        //按首字分组
        $dict=array();
        foreach($keywords as $keyword){
            if(empty($keyword)){
                continue;
            }
            $key = mb_substr($keyword,0,1); //啊扁推翻
            $dict[$key]['list'][]=$keyword; //dict['啊']['list'][] = '啊扁推翻'
            //dict['啊']['max'] = 4,dict['啊']['max'] 获取字符串最长的
            $dict[$key]['max']=max(isset($dict[$key]['max']) ? $dict[$key]['max'] : 0,mb_strlen($keyword));
        }
        //开始过滤
        // $result='';
        for($i=0;$i<$len;++$i){ //200个字 陈啊扁推翻中共
            $key=mb_substr($content,$i,1);
            if(array_key_exists($key,$dict)){
                $res=mb_substr($content,$i,$dict[$key]['max']);
                $af=0;
                foreach($dict[$key]['list'] as $k=>$keyword){
                    if(mb_strpos($res,$keyword) !==false){
                        $keywordlen=mb_strlen($keyword);
                        $af=$keywordlen-1;
                        // $result .=str_repeat("*",$keywordlen);
                        // break;
                        return false;
                    }elseif($k==0){
                        // $result .= mb_substr($res,0,1);
                    }
                }
                $i+=$af;
            }
            // else{
                // $result .= mb_substr($content,$i,1);
            // }
        }
        // return $result;
        return true;
    }

你可能感兴趣的:(PHP,敏感字过滤)