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下利用header()函数设置浏览器缓存的代码
Sep 01 PHP
PHP面向接口编程 耦合设计模式 简单范例
Mar 23 PHP
php输入数据统一类实例
Feb 23 PHP
php计算给定时间之前的函数用法实例
Apr 03 PHP
typecho插件编写教程(五):核心代码
May 28 PHP
php实现的日历程序
Jun 18 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
Aug 12 PHP
PHP内存缓存功能memcached示例
Oct 19 PHP
利用php-cli和任务计划实现刷新token功能的方法
May 03 PHP
php出租房数据管理及搜索页面
May 23 PHP
PHP切割汉字的常用方法实例总结
Apr 27 PHP
ThinkPHP5.1验证码功能实现的示例代码
Jun 08 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
删除无限级目录与文件代码共享
2006/07/12 PHP
文件上传类
2006/10/09 PHP
php的header和asp中的redirect比较
2006/10/09 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
PHP处理CSV表格文件的常用操作方法总结
2016/07/01 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
Yii 2.0在Grid中格式化时间方法示例
2017/06/06 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
基于Jquery的实现回车键Enter切换焦点
2010/09/14 Javascript
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
Jquery submit()无法提交问题
2013/04/21 Javascript
实例分析js和C#中使用正则表达式匹配a标签
2014/11/26 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
javascript验证手机号和实现星号(*)代替实例
2016/08/16 Javascript
3种vue组件的书写形式
2017/11/29 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
2018/10/18 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
2019/04/12 Javascript
IDEA安装vue插件图文详解
2019/09/26 Javascript
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
Java分治归并排序算法实例详解
2017/12/12 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
2018/06/28 Python
python读取几个G的csv文件方法
2019/01/07 Python
python单例模式的多种实现方法
2019/07/26 Python
Python异常模块traceback用法实例分析
2019/10/22 Python
python em算法的实现
2020/10/03 Python
Canvas 帧动画吃苹果小游戏
2020/08/05 HTML / CSS
美国购买和销售礼品卡平台:Raise
2017/01/13 全球购物
元旦晚会邀请函
2014/01/27 职场文书
医生行业员工的辞职信
2019/06/24 职场文书
Python语言规范之Pylint的详细用法
2021/06/24 Python