zoukankan      html  css  js  c++  java
  • PHP实现敏感词过滤

    1、敏感词过滤方法

    /**
     * @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;
    }
    

    2、调用方法

    function testAction(){
      $string = 'likeyou小白喜欢小黑爱着的大黄'; //要过滤的内容
      $list = ['小明', '小红', '大白', '小白', '小黑', 'me', 'you'];  //定义敏感词数组
      $result = $this->sensitive($list, $string);
      echo ($result);
      die;
      //打印结果:
      /*
      原句为 [ likeyou小白喜欢小黑爱着的大黄 ]
      匹配到 [ 3 ]个敏感词:[ you,小白,小黑 ]
      替换后为:[ like**喜欢*爱着的大黄 ]
        */
    }
    
  • 相关阅读:
    new一个对象的时候,实际做了些什么
    ES6 class——getter setter音乐播放器
    vue中引入公用过滤器?
    this详解下
    012天this详解上
    011天之跨域资源共享CORS
    010天JSON.stringify()详解
    009天之跨浏览器的事件处理程序
    使用XHR上传文件要不要了解一下?
    简单化最小化语句数
  • 原文地址:https://www.cnblogs.com/niuben/p/11138324.html
Copyright © 2011-2022 走看看