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 相关文章推荐
PHP4 与 MySQL 数据库操作函数详解
Oct 09 PHP
转换中文日期的PHP程序
Oct 09 PHP
oracle资料库函式库
Oct 09 PHP
php echo 输出字符串函数详解
May 13 PHP
php5.3 废弃函数小结
May 16 PHP
centos 5.6 升级php到5.3的方法
May 14 PHP
简单谈谈php中ob_flush和flush的区别
Nov 27 PHP
thinkPHP实现表单自动验证
Dec 24 PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 PHP
php仿微信红包分配算法的实现方法
May 13 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
Oct 29 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 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
关于js与php互相传值的介绍
2013/06/25 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
跨浏览器通用、可重用的选项卡tab切换js代码
2011/09/20 Javascript
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
cookie的secure属性详解
2015/04/08 Javascript
通过BootStrap-select插件 js jQuery控制select属性变化
2017/01/03 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
微信小程序 数据交互与渲染实例详解
2017/01/21 Javascript
4个顶级JavaScript高级文本编辑器
2018/10/10 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
react antd表格中渲染一张或多张图片的实例
2020/10/28 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
发布你的Python模块详解
2016/09/15 Python
深入了解Python中pop和remove的使用方法
2018/01/09 Python
python实现一个简单的并查集的示例代码
2018/03/19 Python
python入门:这篇文章带你直接学会python
2018/09/14 Python
Python根据文件名批量转移图片的方法
2018/10/21 Python
解决Python对齐文本字符串问题
2019/08/28 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
2019/11/15 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
2020/09/20 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
2021/02/26 Python
编写html5时调试发现脚本php等网页js、css等失效
2013/12/31 HTML / CSS
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
清扬洗发水广告词
2014/03/14 职场文书
绿色环保口号
2014/06/12 职场文书
2014个人年终工作总结范文
2014/12/15 职场文书
2015年度保密工作总结
2015/04/24 职场文书
检察院起诉书
2015/05/20 职场文书
Redis Cluster 字段模糊匹配及删除
2021/05/27 Redis
vue3中provide && inject的使用
2021/07/01 Vue.js
golang中的struct操作
2021/11/11 Golang
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript