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 相关文章推荐
substr()函数中文版
Oct 09 PHP
PHP静态新闻列表自动生成代码
Jun 14 PHP
php生成的html meta和link标记在body标签里 顶部有个空行
May 18 PHP
php ckeditor上传图片文件名乱码解决方法
Nov 15 PHP
php定界符
Jun 19 PHP
PHP输出一个等腰三角形的方法
May 12 PHP
php结合ACCESS的跨库查询功能
Jun 12 PHP
php基于openssl的rsa加密解密示例
Jul 11 PHP
PHP读取大文件的几种方法介绍
Oct 27 PHP
PHP实现多级分类生成树的方法示例
Feb 07 PHP
ThinkPHP开发--使用七牛云储存
Sep 14 PHP
php curl发送请求实例方法
Aug 01 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生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
PHP+MySQL实现的简单投票系统实例
2016/02/24 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
php压缩文件夹最新版
2018/07/18 PHP
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
jquery $.each() 使用小探
2013/08/23 Javascript
sails框架的学习指南
2014/12/22 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
详解nodejs 文本操作模块-fs模块(二)
2016/12/22 NodeJs
Jquery实时监听input value的实例
2017/01/26 Javascript
解决vue动态为数据添加新属性遇到的问题
2018/09/18 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
javascript验证form表单数据的案例详解
2019/03/25 Javascript
用Python编程实现语音控制电脑
2014/04/01 Python
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
解读python logging模块的使用方法
2018/04/17 Python
Python 查看list中是否含有某元素的方法
2018/06/27 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
Python django框架应用中实现获取访问者ip地址示例
2019/05/17 Python
python itchat实现调用微信接口的第三方模块方法
2019/06/11 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
2020/01/08 Python
python实现实时视频流播放代码实例
2020/01/11 Python
python游戏开发的五个案例分享
2020/03/09 Python
python re的findall和finditer的区别详解
2020/11/15 Python
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
匡威比利时官网:Converse Belgium
2017/04/13 全球购物
如何写毕业求职自荐信
2013/11/06 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
公务员个人考察材料
2014/12/23 职场文书
运动会1000米加油稿
2015/07/21 职场文书
初中政教处工作总结
2015/08/12 职场文书
学习心理学心得体会
2016/01/22 职场文书
PHP中国际化的字符串排序和比较对象详解
2021/08/23 PHP