PHP 过滤敏感词

最近做了个敏感词。走了很多弯路,这里记下。 老大分配我这个任务时说构建个大数组,然后递归过滤,效率比较快。然后我义无反顾地往这个坑里跳。我水平太菜,鼓捣了两天,递归还是没有搞定。 后来看到strstr()函数效率高,就用这个来做。

  1. 构建一个数组 结构如下: [ ‘abc’=>’‘, ‘defg’=>’*‘ ] 代码如下:

    $data = Badword::select('badword')->where('status',1)->distinct()->get()->toArray();
    $a =array();
    foreach ($data as  $v) {
    $replace = "";
    for($i=0;$i<mb_strlen($v['badword'],'utf-8');$i++){
    $replace .= "*";
    }
    $a = array_merge($a,array($v['badword']=>$replace));
    }
    $handle = fopen($dir,"w+");
    $fwrite = fwrite($handle, "<?php return ".var_export($a,true)."; ?>");
    
  2. 使用strstr()过滤

    $string =strtr($string,$badword);
    
请我喝咖啡
liaol WeChat Pay

微信打赏