php实现的敏感词过滤方法

本文阅读 1 分钟
首页 PHP笔记 正文
  1. <?php
  2. /*
  3. PHP实现的敏感词过滤方法
  4. */
  5. /**
  6. * @todo 敏感词过滤,返回结果
  7. * @param array $list 定义敏感词一维数组
  8. * @param string $string 要过滤的内容
  9. * @return string $log 处理结果
  10. */
  11. function sensitive($list, $string){
  12. $count = 0; //违规词的个数
  13. $sensitiveWord = ''; //违规词
  14. $stringAfter = $string; //替换后的内容
  15. $pattern = "/".implode("|",$list)."/i"; //定义正则表达式
  16. if(preg_match_all($pattern, $string, $matches)){ //匹配到了结果
  17. $patternList = $matches[0]; //匹配到的数组
  18. $count = count($patternList);
  19. $sensitiveWord = implode(',', $patternList); //敏感词数组转字符串
  20. $replaceArray = array_combine($patternList,array_fill(0,count($patternList),'*')); //把匹配到的数组进行合并,替换使用
  21. $stringAfter = strtr($string, $replaceArray); //结果替换
  22. }
  23. $log = "原句为 [ {$string} ]<br/>";
  24. if($count==0){
  25. $log .= "暂未匹配到敏感词!";
  26. }else{
  27. $log .= "匹配到 [ {$count} ]个敏感词:[ {$sensitiveWord} ]<br/>".
  28. "替换后为:[ {$stringAfter} ]";
  29. }
  30. return $log;
  31. }
  32. function testAction(){
  33. $string = 'likeyou小白喜欢小黑爱着的大黄'; //要过滤的内容
  34. $list = ['小明', '小红', '大白', '小白', '小黑', 'me', 'you']; //定义敏感词数组
  35. $result = sensitive($list, $string);
  36. echo ($result);
  37. //打印结果:
  38. /*
  39. 原句为 [ likeyou小白喜欢小黑爱着的大黄 ]
  40. 匹配到 [ 3 ]个敏感词:[ you,小白,小黑 ]
  41. 替换后为:[ like**喜欢*爱着的大黄 ]
  42. */
  43. }
解压密码: detechn或detechn.com

免责声明

本站所有资源出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。

本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户自行鉴别,做一个有主见和判断力的用户。

本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。

php递归扫描文件夹及其子文件夹下的文件名
« 上一篇 06-01
thinkphp5字符串命名风格转换
下一篇 » 06-04

发表评论