PHP之 敏感词过滤

这篇具有很好参考价值的文章主要介绍了PHP之 敏感词过滤。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

方式一

<?php
 
    /**
     * 敏感词过滤
     *
     * @param string
     * @return string
     */
    function sensitive_words_filter($str)
    {
        if (!$str) return '';
        $file = 'public/system/plug/censorwords/CensorWords'; //文件路径及内容自定义
        $words = file($file);
        foreach ($words as $word) {
            $word = str_replace(array("\r\n", "\r", "\n", "/", "<", ">", "=", " "), '', $word);
            if (!$word) continue;
 
            $ret = preg_match("/$word/", $str, $match);
            if ($ret) {
                return $match[0];
            }
        }
        return '';
    }

二 同思路
创建 敏感词.csv文章来源地址https://www.toymoban.com/news/detail-405843.html

// 敏感词过滤
    $result = $this->get_Sensitive_Words_csv($params['post_content']);
    if($result == true){
        return reply("包含敏感字",1,$validator->errors());
    }

function get_Sensitive_Words_csv($content=''){

    // $csv_file='精确敏感词.csv';
    $csv_file='/www/wwwroot/mg.csv';  // 不能中文文件名

    // 防止乱码
    $content = '';
    $text = file_get_contents($csv_file);

    //$encodType = mb_detect_encoding($text);
    define('UTF32_BIG_ENDIAN_BOM', chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF));
    define('UTF32_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00));
    define('UTF16_BIG_ENDIAN_BOM', chr(0xFE) . chr(0xFF));
    define('UTF16_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE));
    define('UTF8_BOM', chr(0xEF) . chr(0xBB) . chr(0xBF));
    $first2 = substr($text, 0, 2);
    $first3 = substr($text, 0, 3);
    $first4 = substr($text, 0, 3);
    $encodType = "";
    if (UTF8_BOM == $first3) {
        $encodType = 'UTF-8 BOM';
    } else if (UTF32_BIG_ENDIAN_BOM == $first4) {
        $encodType = 'UTF-32BE';
    } else if (UTF32_LITTLE_ENDIAN_BOM == $first4) {
        $encodType = 'UTF-32LE';
    } else if (UTF16_BIG_ENDIAN_BOM == $first2) {
        $encodType = 'UTF-16BE';
    } else if (UTF16_LITTLE_ENDIAN_BOM == $first2) {
        $encodType = 'UTF-16LE';
    }

    //下面的判断主要还是判断ANSI编码的·
    if ('' == $encodType) {
        //即默认创建的txt文本-ANSI编码的
        $content = iconv("GBK", "UTF-8", $text);
    } else if ('UTF-8 BOM' == $encodType) {
        //本来就是UTF-8不用转换
        $content = $text;
    } else {
        //其他的格式都转化为UTF-8就可以了
        $content = iconv($encodType, "UTF-8", $text);
    }
    $arr = explode("\r\n",$content);


    //读取文件
    // $file=file_get_contents($csv_file);
    // $arr = explode("\r\n",$file);

    foreach($arr as $k=>$v){
        if($v){
            if(strpos($content,trim($v))!==false){  // 有敏感字
                return true;
            }
        }
    }

    return false;
}

到了这里,关于PHP之 敏感词过滤的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stable diffusion webui过滤敏感信息NSFW

    过滤敏感信息(如涩图),可使用stable-diffusion-webui-nsfw-censor扩展,github仓库地址为:点这里 安装该扩展后,如果扩展认为是敏感信息,则会直接生成一张【黑色】的图片 1、运行sd webui,找到【扩展】-粘贴“简介”中的github仓库地址,点击【安装】 2、安装成功后,重启sd

    2024年02月13日
    浏览(36)
  • 职责链模式:如何实现可灵活扩展算法的敏感信息过滤框架?

            今天,我们主要 讲解职责链模式 的原理和实现。除此之外,我还会利用职责链模式,带你实现一个 可以灵活扩展算法的敏感词过滤框架 。下一节课,我们会更加贴近实战,通过剖析Servlet Filter、Spring Interceptor来看,如何利用职责链模式实现框架中常用的过滤器、

    2024年02月16日
    浏览(34)
  • PHP代码审计——PHP中常见的敏感函数列表

          PHP中常见的敏感函数列表。       命令执行函数,执行一个外部程序,不显示输出。       命令执行函数,执行一个外部程序,显示输出。       命令执行函数,执行一个外部程序,显示原始输出。       通过shell 环境执行命令,并且将完整的输出以字符

    2024年02月02日
    浏览(49)
  • 【Spring Cloud】新闻头条微服务项目:文章内容安全审核(新增DFA+OCR过滤敏感词需求)

    个人简介:  📦个人主页:赵四司机 🏆学习方向:JAVA后端开发  ⏰往期文章:SpringBoot项目整合微信支付 🔔博主推荐网站:牛客网 刷题|面试|找工作神器 📣种一棵树最好的时间是十年前,其次是现在! 💖喜欢的话麻烦点点关注喔,你们的支持是我的最大动力。 前言:

    2023年04月08日
    浏览(92)
  • 【设计模式与范式:行为型】62 | 职责链模式(上):如何实现可灵活扩展算法的敏感信息过滤框架?

    前几节课中,我们学习了模板模式、策略模式,今天,我们来学习职责链模式。这三种模式具有相同的作用:复用和扩展,在实际的项目开发中比较常用,特别是框架开发中,我们可以利用它们来提供框架的扩展点,能够让框架的使用者在不修改框架源码的情况下,基于扩展

    2024年02月10日
    浏览(43)
  • java黑马头条 day5自媒体文章审核 敏感词过滤算法DFA 集成RabbitMQ实现自动审核

      做为内容类产品,内容安全非常重要,所以需要进行对自媒体用户发布的文章进行审核以后才能到app端展示给用户。2 WmNews 中 status 代表自媒体文章的状态 status字段:0 草稿 1 待审核 2 审核失败 3 人工审核 4 人工审核通过   8 审核通过(待发布) 9 已发布 当自媒体用户提交

    2024年02月06日
    浏览(39)
  • (C#) IIS 响应标头过滤敏感信息(如:Server/X-Powered-By等) 运维知识

    再一次净网行动中,客户要求安全改造发现了接口请求的header标头中出现如图中的敏感信息。   其意义在于告知浏网站是用什么语言或者框架编写的。解决办法就是修改该响应头为一个错误的值,将攻击者导向一个错误的方向。 这里只说windows 的iis环境,不考虑其他服务器的

    2024年02月11日
    浏览(69)
  • axios 传递参数的方式(data 与 params)

    提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 工作案例:在 vue 项目使用 axios 传递参数的方式(data 与 params) 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 工作中,用到的传递

    2024年04月17日
    浏览(30)
  • Vue Router携带并接收query、params参数方式

    传递参数 【方式一:通过查询字符串直接拼接在路径后面】 【方式二:传递一个对象,路径是path属性,拼接的参数是query属性,推荐】 接收参数 【直接在$route.query中获取】 router/index.js 【需要在router中配置path、name】 传递参数 接收参数 在router/index.js中配置props属性 接收参

    2024年02月13日
    浏览(37)
  • 【漏洞复现-通达OA】通达OA get_contactlist.php 敏感信息泄漏漏洞

    通达OA get_contactlist.php文件存在信息泄漏漏洞,攻击者通过漏洞可以获取敏感信息,进一步攻击。 ● 通达OA2013 ● hunter app.name=\\\"通达 OA\\\" ● 特征 四、漏洞复现

    2024年02月20日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包