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 mysql数据库操作类
Jun 04 PHP
用PHP读取和编写XML DOM的实现代码
Feb 03 PHP
php 面向对象的一个例子
Apr 12 PHP
基于php在各种web服务器的运行模式详解
Jun 03 PHP
php读取图片内容并输出到浏览器的实现代码
Aug 08 PHP
PHP中实现生成静态文件的方法缓解服务器压力
Jan 07 PHP
Thinkphp中Create方法深入探究
Jun 16 PHP
PHP微信开发之文本自动回复
Jun 23 PHP
PHP编程计算日期间隔天数的方法
Apr 26 PHP
Laravel框架实现定时发布任务的方法
Aug 16 PHP
vmware linux系统安装最新的php7图解
Apr 14 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
Jul 20 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教程 基本语法
2009/10/23 PHP
php数组排序usort、uksort与sort函数用法
2014/11/17 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
2017/03/04 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
Javascript 获取LI里的内容
2008/12/17 Javascript
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
无缝滚动js代码通俗易懂(自写)
2013/06/19 Javascript
自动设置iframe大小的jQuery代码
2013/09/11 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
基于jquery css3实现点击动画弹出表单源码特效
2015/08/31 Javascript
JavaScript实现倒计时代码段Item1(非常实用)
2015/11/03 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
js 监控iframe URL的变化实例代码
2017/07/12 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
在Python中关于中文编码问题的处理建议
2015/04/08 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
python 实现单通道转3通道
2019/12/03 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
2020/04/16 Python
python如何调用字典的key
2020/05/25 Python
pycharm软件实现设置自动保存操作
2020/06/08 Python
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
财务专业大学生职业生涯规划范文
2013/12/30 职场文书
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
协议书范文
2015/01/27 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
2015年行政管理人员工作总结
2015/10/15 职场文书
JavaScript使用canvas绘制坐标和线
2021/04/28 Javascript
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫