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之第五天
Oct 09 PHP
php简单浏览目录内容的实现代码
Jun 07 PHP
解析左右值无限分类的实现算法
Jun 20 PHP
php ios推送(代码)
Jul 01 PHP
php header功能的使用
Oct 28 PHP
php发送post请求函数分享
Mar 06 PHP
使用Discuz关键词服务器实现PHP中文分词
Mar 11 PHP
PHP封装分页函数实现文本分页和数字分页
Oct 23 PHP
PHP面试题之文件目录操作
Oct 15 PHP
php session的锁和并发
Jan 22 PHP
Laravel实现搜索的时候分页并携带参数
Oct 15 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 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
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
使用VisualStudio开发php的图文设置方法
2010/08/21 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
jquery 元素相对定位代码
2010/10/15 Javascript
jQuery 名称冲突的解决方法
2011/04/08 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
javascript中Number对象的toString()方法分析
2014/12/20 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
jquery attr()设置和获取属性值实例教程
2016/09/25 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
2016/12/14 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
JS实现排行榜文字向上滚动轮播效果
2019/11/26 Javascript
VUE动态生成word的实现
2020/07/26 Javascript
python自定义解析简单xml格式文件的方法
2015/05/11 Python
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
Python3学习笔记之列表方法示例详解
2017/10/06 Python
一篇文章快速了解Python的GIL
2018/01/12 Python
python打开windows应用程序的实例
2019/06/28 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
python列表返回重复数据的下标
2020/02/10 Python
python数据处理——对pandas进行数据变频或插值实例
2020/04/22 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
党员创先争优承诺书
2014/03/26 职场文书
工伤私了协议书范本
2014/11/24 职场文书
团结主题班会
2015/08/13 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
小学生六年级作文之关于感恩
2019/08/16 职场文书
大学生党员暑假实践(活动总结)
2019/08/21 职场文书
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
2022/06/01 Java/Android