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**喜欢*爱着的大黄 ]
        */
    }
    
  • 相关阅读:
    第一、二章读书笔记
    # 学号 20191221 《Python程序设计》实验一报告
    20191221实验四实验报告
    学号:20191221,《python实验设计》实验报告三
    20191221实验二报告
    快速浏览教材遇到
    何应霆 20191221
    2019-2020-1 20191319 《信息安全专业导论》第3周学习总结
    2019-2020-1 20191319《信息安全专业导论》第二周学习总结
    师生关系
  • 原文地址:https://www.cnblogs.com/niuben/p/11138324.html
Copyright © 2011-2022 走看看