zoukankan      html  css  js  c++  java
  • 一个高效的敏感词过滤方法(PHP)

    效率对比(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和正则的效率高。
    ?>

    整理的一份敏感词sql, 共计6500多条。 经过几次整改,可以直接使用。

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

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

  • 相关阅读:
    操作缓冲池
    占位图像
    GCD 常用代码
    资源共享(抢夺)
    drf版本控制 django缓存
    drf分页器
    解析器,路由控制,响应器
    drf 频率组件 META字典详情
    vue创建路由,axios前后台交互,element-ui配置使用,django contentType组件
    redis列表,字典,管道,vue安装,创建项目
  • 原文地址:https://www.cnblogs.com/yehuisir/p/13600207.html
Copyright © 2011-2022 走看看