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

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    /**
     * @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;
    }

      调用方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function testAction(){
     $string 'likeyou小白喜欢小黑爱着的大黄'//要过滤的内容
     $list = ['小明''小红''大白''小白''小黑''me''you']; //定义敏感词数组
     $result $this->sensitive($list$string);
     echo ($result);
     die;
     //打印结果:
     /*
     原句为 [ likeyou小白喜欢小黑爱着的大黄 ]
     匹配到 [ 3 ]个敏感词:[ you,小白,小黑 ]
     替换后为:[ like**喜欢*爱着的大黄 ]
     */
    }
  • 相关阅读:
    CSplitterWnd 成员介绍及切分条的定制
    时空数据挖掘 Mining Complex SpatioTemporal Sequence Patterns
    动态布局切分窗口
    不管你现在多穷多蠢,只要抓住一个上升的载体你就能变成富人
    破解了小区宽带的限制
    VC6.0的若干实用小技巧
    恶搞程序发布(更新版本)
    WPF笔记
    做多维数据集需要注意的两个细节
    关于值类型和引用类型的备忘
  • 原文地址:https://www.cnblogs.com/xu1115/p/15237002.html
Copyright © 2011-2022 走看看