您现在的位置是: 首页 >  PHP教程 >  文章详情 文章详情

用PHP如何实现敏感词过滤

2019-08-19 【PHP教程】 1347人浏览

本文实例讲述了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} ]
";   if($count==0){     $log .= "暂未匹配到敏感词!";   }else{     $log .= "匹配到 [ {$count} ]个敏感词:[ {$sensitiveWord} ]
".       "替换后为:[ {$stringAfter} ]";   }   return $log; }


2、调用方法

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



很赞哦! (0)

站长推荐