• 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实现的敏感词过滤方法,你们有好的编码和好的实现方法吗,可以发出来一起交流一下。

  • 相关阅读:
    工作中常用的工具
    lua 调试、热重载
    Lua库收集
    Mac常见端口
    Swift 学习笔记1
    项目-微博(模仿新浪微博)
    iOS多线程
    iOSCoreData介绍
    iOS数据库操作流程
    iOS中数据库运用之前的准备-简单的数据库
  • 原文地址:https://www.cnblogs.com/qichao123/p/11001839.html
Copyright © 2020-2023  润新知