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 相关文章推荐
写一个用户在线显示的程序
Oct 09 PHP
PHP+XML 制作简单的留言本 图文教程
Nov 02 PHP
PHP仿盗链代码
Jun 03 PHP
PHP的异常处理类Exception的使用及说明
Jun 13 PHP
如何设置mysql允许外网访问
Jun 04 PHP
深入PHP数据加密详解
Jun 18 PHP
Yii操作数据库的3种方法
Mar 11 PHP
PHP5.5在windows安装使用memcached服务端的方法
Apr 16 PHP
php写入、删除与复制文件的方法
Jun 20 PHP
PHP中的switch语句的用法实例详解
Oct 21 PHP
php数据结构之顺序链表与链式线性表示例
Jan 22 PHP
PHP xpath()函数讲解
Feb 11 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连接Oracle for NT 远程数据库
2006/10/09 PHP
修改Zend引擎实现PHP源码加密的原理及实践
2008/04/14 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
部署PHP时的4个配置修改说明
2015/10/19 PHP
PHPCMS2008广告模板SQL注入漏洞修复
2016/10/11 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
2016/12/09 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
javascript同步Import,同步调用外部js的方法
2008/07/08 Javascript
基于jQuery的图片左右无缝滚动插件
2012/05/23 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
理解javascript中DOM事件
2015/12/25 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
express+mockjs实现模拟后台数据发送功能
2018/01/07 Javascript
详解Webpack抽离第三方类库以及common解决方案
2020/03/30 Javascript
python用字典统计单词或汉字词个数示例
2014/04/22 Python
有关wxpython pyqt内存占用问题分析
2014/06/09 Python
Python import自定义模块方法
2015/02/12 Python
Flask-Mail用法实例分析
2018/07/21 Python
Pandas中resample方法详解
2019/07/02 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
2020/04/02 Python
Pytorch环境搭建与基本语法
2020/06/03 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
2020/07/28 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
测控技术自荐信
2014/06/05 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
幼儿园卫生保健制度
2015/08/05 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
CSS 文字装饰 text-decoration & text-emphasis 详解
2021/04/06 HTML / CSS
MySQL 可扩展设计的基本原则
2021/05/14 MySQL