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中利用XML技术构造远程服务(下)
Oct 09 PHP
PHP中在数据库中保存Checkbox数据(1)
Oct 09 PHP
PHP高级对象构建 多个构造函数的使用
Feb 05 PHP
PHP获取http请求的头信息实现步骤
Dec 16 PHP
PHP 解决session死锁的方法
Jun 20 PHP
memcache命令启动参数中文解释
Jan 13 PHP
php数字运算验证码的实现代码
Jul 30 PHP
PHP设计模式之适配器模式原理与用法分析
Apr 25 PHP
php操作mongodb封装类与用法实例
Sep 01 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
Apr 07 PHP
PHP延迟静态绑定使用方法实例解析
Sep 05 PHP
aec加密 php_php aes加密解密类(兼容php5、php7)
Mar 14 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 cli 方式 在crotab中运行解决
2010/02/08 PHP
php 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
Symfony生成二维码的方法
2016/02/04 PHP
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
js中各种类型的变量在if条件中是true还是false
2014/07/16 Javascript
使用jquery.validate自定义方法实现&quot;手机号码或者固话至少填写一个&quot;的逻辑验证
2014/09/01 Javascript
JavaScript中的getTime()方法使用详解
2015/06/10 Javascript
bootstrap table单元格新增行并编辑
2017/05/19 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
vue-cli3.X快速创建项目的方法步骤
2019/11/14 Javascript
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
详解Python读取yaml文件多层菜单
2019/03/23 Python
python3 动态模块导入与全局变量使用实例
2019/12/22 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
关于Python字符编码与二进制不得不说的一些事
2020/10/04 Python
python Timer 类使用介绍
2020/12/28 Python
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
南威尔士家居商店:Leekes
2016/10/25 全球购物
华为python面试题
2016/05/03 面试题
艺术专业大学生自我评价
2013/09/22 职场文书
校园安全检查制度
2014/02/03 职场文书
学生党支部先进事迹
2014/02/04 职场文书
机关单位人员学雷锋心得体会
2014/03/10 职场文书
初中学生期末评语
2014/04/24 职场文书
思想作风纪律整顿心得体会
2014/09/04 职场文书
个人自查自纠材料
2014/10/14 职场文书
中标通知书
2015/04/17 职场文书
消夏晚会主持词
2015/06/30 职场文书
党风廉政承诺书2016
2016/03/25 职场文书
SpringBoot+Redis实现布隆过滤器的示例代码
2022/03/17 Java/Android
Win11快速关闭所有广告推荐
2022/04/19 数码科技