PHP实现的敏感词过滤方法示例


Posted in PHP onMarch 06, 2019

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

2、调用方法

function testAction(){
  $string = 'likeyou小白喜欢小黑爱着的大黄'; //要过滤的内容
  $list = ['小明', '小红', '大白', '小白', '小黑', 'me', 'you'];  //定义敏感词数组
  $result = $this->sensitive($list, $string);
  echo ($result);
  die;
  //打印结果:
  /*
  原句为 [ likeyou小白喜欢小黑爱着的大黄 ]
  匹配到 [ 3 ]个敏感词:[ you,小白,小黑 ]
  替换后为:[ like**喜欢*爱着的大黄 ]
    */
}
PHP 相关文章推荐
谈谈PHP语法(3)
Oct 09 PHP
php mssql 数据库分页SQL语句
Dec 16 PHP
PHP中几种常见的超时处理全面总结
Sep 11 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
Jun 21 PHP
php分页示例分享
Apr 30 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
Nov 04 PHP
thinkPHP实现瀑布流的方法
Nov 29 PHP
php从完整文件路径中分离文件目录和文件名的方法
Mar 13 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
Jan 11 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
Aug 10 PHP
PHP实现重载的常用方法实例详解
Oct 18 PHP
PHP swoole和redis异步任务实现方法分析
Aug 12 PHP
详解PHP 二维数组排序保持键名不变
Mar 06 #PHP
PHP获取ttf格式文件字体名的方法示例
Mar 06 #PHP
php ajax confirm 删除实例详解
Mar 06 #PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 #PHP
一次因composer错误使用引发的问题与解决
Mar 06 #PHP
利用PHP如何统计Nginx日志的User Agent数据
Mar 06 #PHP
浅谈php://filter的妙用
Mar 05 #PHP
You might like
PHP Session机制简介及用法
2014/08/19 PHP
php去除字符串中空字符的常用方法小结
2015/03/17 PHP
php实现在多维数组中查找特定value的方法
2015/07/29 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
php微信公众号开发之秒杀
2018/10/20 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
javascript DOM编程实例(智播客学习)
2009/11/23 Javascript
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
始终在屏幕中间显示Div的代码(css+js)
2011/03/10 Javascript
jsonp原理及使用
2013/10/28 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
2016/09/23 Javascript
微信小程序入门教程
2016/11/18 Javascript
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
原生JS京东轮播图代码
2017/03/22 Javascript
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
详解Vite的新体验
2021/02/22 Javascript
[07:01]DOTA2-DPC中国联赛正赛 Aster vs Magma 3月5日 赛后选手采访
2021/03/11 DOTA
Python中的闭包详细介绍和实例
2014/11/21 Python
Python中的多重装饰器
2015/04/11 Python
python装饰器实例大详解
2017/10/25 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
教师个人自我鉴定
2014/02/08 职场文书
机械设计及其自动化求职推荐信
2014/02/17 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
超市开店计划书
2014/09/15 职场文书
乡镇党委书记第三阶段个人整改措施
2014/09/16 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
运动会稿件100字
2014/09/24 职场文书
2015教师年度考核评语
2015/03/25 职场文书
刑事案件上诉状
2015/05/23 职场文书
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs
AJAX学习笔记
2021/05/18 Javascript