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 相关文章推荐
mysql数据库差异比较的PHP代码
Feb 05 PHP
探讨PHP中OO之静态关键字以及类常量的详解
Jun 07 PHP
PHP面向对象之旅:深入理解static变量与方法
Jan 06 PHP
PHP mail()函数使用及配置方法
Jan 14 PHP
PHP中nowdoc和heredoc使用需要注意的一点
Mar 21 PHP
ThinkPHP实现跨模块调用操作方法概述
Jun 20 PHP
ThinkPHP自动填充实现无限级分类的方法
Aug 22 PHP
php常用hash加密函数
Nov 22 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
Nov 27 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
Mar 17 PHP
PHP有序表查找之插值查找算法示例
Feb 10 PHP
Laravel框架路由设置与使用示例
Jun 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版国家代码、缩写查询函数代码
2011/08/14 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
PHP中遇到的时区问题解决方法
2015/07/23 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
2017/03/15 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
如何在PHP环境中使用ProtoBuf数据格式
2020/06/19 PHP
jQuery 源码分析笔记(3) Deferred机制
2011/06/19 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
AngularJS ng-blur 指令详解及简单实例
2016/07/30 Javascript
文件上传插件SWFUpload的使用指南
2016/11/29 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
webpack打包node.js后端项目的方法
2018/03/10 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
vue仿element实现分页器效果
2018/09/13 Javascript
vue将毫秒数转化为正常日期格式的实例
2018/09/16 Javascript
js实现图片局部放大效果详解
2019/03/18 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
速记Python布尔值
2017/11/09 Python
将tensorflow的ckpt模型存储为npy的实例
2018/07/09 Python
面向初学者的Python编辑器Mu
2018/10/08 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
python3 unicode列表转换为中文的实例
2018/10/26 Python
机器学习实战之knn算法pandas
2019/06/22 Python
Python 支持向量机分类器的实现
2020/01/15 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
信访工作经验交流材料
2014/05/23 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
队名及霸气口号大全
2015/12/25 职场文书
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android