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

    PHP实现的敏感词过滤方法,以下是一份过滤敏感词的编码。有需要可以参考参考。

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

      调用方法

    function testAction(){
     $string = 'likeyou小白喜欢小黑爱着的大黄'; //要过滤的内容
     $list = ['小明', '小红', '大白', '小白', '小黑', 'me', 'you']; //定义敏感词数组
     $result = $this->sensitive($list, $string);
     echo ($result);
     die;
     //打印结果:
     /*
     原句为 [ likeyou小白喜欢小黑爱着的大黄 ]
     匹配到 [ 3 ]个敏感词:[ you,小白,小黑 ]
     替换后为:[ like**喜欢*爱着的大黄 ]
     */
    }
    

      PHP实现的敏感词过滤方法,你们有好的编码和好的实现方法吗,可以发出来一起交流一下。

  • 相关阅读:
    HDU 3951 (博弈) Coin Game
    HDU 3863 (博弈) No Gambling
    HDU 3544 (不平等博弈) Alice's Game
    POJ 3225 (线段树 区间更新) Help with Intervals
    POJ 2528 (线段树 离散化) Mayor's posters
    POJ 3468 (线段树 区间增减) A Simple Problem with Integers
    HDU 1698 (线段树 区间更新) Just a Hook
    POJ (线段树) Who Gets the Most Candies?
    POJ 2828 (线段树 单点更新) Buy Tickets
    HDU 2795 (线段树 单点更新) Billboard
  • 原文地址:https://www.cnblogs.com/qichao123/p/11001839.html
Copyright © 2011-2022 走看看