• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

一个高效的敏感词过滤方法(PHP)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

效率对比(12688个字符,替换1次): 

  • str_replace: 0.109937906265秒
  • strtr: 0.0306839942932秒

 

替换结果对比  
  • 比如:「张三」、「张三丰」、「张三丰田」 均为违禁词 (为何会有这样的区分?请参见 「法X」、「法Xgong」) 
  • 原文:「我今天开着张三丰田去上班 」 
  • strtr:「我今天开着****去上班 」(四个词均替换为了*) 
  • str_replace:「我今天开着**丰田去上班 」(仅仅替换了第一个匹配项) 
所以使用str_replace替换,是不能本质上解决问题。 


时间对比: 
关键词数量:6712 (无重复)
<?php
$badword = array( '张三','张三丰','张三丰田');
?>
 
测试文件demo.php
<?php
require('badword.php');
$badword1 =array_combine($badword,array_fill(0,count($badword),'*'));
$bb = '我今天开着张三丰田上班';
$str = strtr($bb,$badword1);
echo $str;
?>


 
测试结果:我今天开着*上班
分析:strtr函数比str_replace和正则的效率高。
 
 
<?php
// 测试文件demo.php
$badword = array(
    '张三','张三丰','张三丰田'
);
// array_combine() 函数通过合并两个数组来创建一个新数组,其中的一个数组是键名,另一个数组的值为键值。如果其中一个数组为空,或者两个数组的元素个数不同,则该函数返回 false。
// array_fill() 函数用给定的值填充数组,返回的数组有 number 个元素,值为 value。返回的数组使用数字索引,从 start 位置开始并递增。如果 number 为 0 或小于 0,就会出错。
$badword1 = array_combine($badword,array_fill(0,count($badword),'*'));
 
$bb = '我今天开着张三丰田上班';
$str = strtr($bb, $badword1);
echo $str;
// 测试结果: 我今天开着*上班
// 分析: strtr函数比str_replace和正则的效率高。
?>

github 下载地址: https://github.com/daidailin/sensitiveWork

转载:https://blog.csdn.net/qq_30057893/article/details/54409587


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
php自动刷新页面(转)发布时间:2022-07-10
下一篇:
php代码审计基础笔记发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap