laravel框架实现敏感词汇过滤功能示例


Posted in PHP onFebruary 15, 2020

本文实例讲述了laravel框架实现敏感词汇过滤功能。分享给大家供大家参考,具体如下:

最近项目有需求,要对用户的签名,回复进行敏感词检测,然后搜到了一个好用的扩展,分享给大家。

https://github.com/FireLustre/php-dfa-sensitive

通过 composer 进行安装:

composer require lustre/php-dfa-sensitive

然后在 app 目录下创建 Services ,并添加 SensitiveWords.php

<?php
namespace App\Services;
use DfaFilter\SensitiveHelper;
class SensitiveWords
{
  protected static $handle = null;
  private function __construct()
  {
  }
  private function __clone()
  {
  }
  /**
   * 获取实例
   */
  public static function getInstance($word_path = [])
  {
    if (!self::$handle) {
      //默认的一些敏感词库
      $default_path = [
        storage_path('dict/bk.txt'),
        storage_path('dict/fd.txt'),
        storage_path('dict/ms.txt'),
        storage_path('dict/qt.txt'),
        storage_path('dict/sq.txt'),
        storage_path('dict/tf.txt'),
      ];
      $paths = array_merge($default_path, $word_path);
      self::$handle = SensitiveHelper::init();
      if (!empty($paths)) {
        foreach ($paths as $path) {
          self::$handle->setTreeByFile($path);
        }
      }
    }
    return self::$handle;
  }
  /**
   * 检测是否含有敏感词
   */
  public static function isLegal($content)
  {
    return self::getInstance()->islegal($content);
  }
  /**
   * 敏感词过滤
   */
  public static function replace($content, $replace_char = '', $repeat = false, $match_type = 1)
  {
    return self::getInstance()->replace($content, $replace_char, $repeat, $match_type);
  }
  /**
   * 标记敏感词
   */
  public static function mark($content, $start_tag, $end_tag, $match_type = 1)
  {
    return self::getInstance()->mark($content, $start_tag, $end_tag, $match_type);
  }
  /**
   * 获取文本中的敏感词
   */
  public static function getBadWord($content, $match_type = 1, $word_num = 0)
  {
    return self::getInstance()->getBadWord($content, $match_type, $word_num);
  }
}

然后我们就可以在项目中,使用 SensitiveWords::getBadWord() 来获取文本中是否有敏感词。

$bad_word = SensitiveWords::getBadWord($content);
if (!empty($bad_word)) {
  throw new \Exception('包含敏感词:' . current($bad_word));
}

在 storage 目录下创建 dict 目录存放敏感词词库,bk.txt .....等等,这些词库都是我在网上下载的。

点击此处本站下载

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
新版PHP极大的增强功能和性能
Oct 09 PHP
php 生成文字png图片的代码
Apr 17 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
Jun 19 PHP
php设计模式之简单工厂模式详解
Sep 04 PHP
简单实用的PHP防注入类实例
Dec 05 PHP
PHP跨平台获取服务器IP地址自定义函数分享
Dec 29 PHP
在Windows系统下使用PHP生成Word文档的教程
Jul 03 PHP
PHP缓冲区用法总结
Feb 14 PHP
PHP session 会话处理函数
Jun 06 PHP
Yii列表定义与使用分页方法小结(3种方法)
Jul 15 PHP
Laravel如何友好的修改.env配置文件详解
Jun 07 PHP
PHP中strval()函数实例用法
Jun 07 PHP
PHP 枚举类型的管理与设计知识点总结
Feb 13 #PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
Feb 12 #PHP
分享8个Laravel模型时间戳使用技巧小结
Feb 12 #PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
Feb 11 #PHP
thinkphp5框架路由原理与用法详解
Feb 11 #PHP
php数组指针函数功能及用法示例
Feb 11 #PHP
PHP实现单例模式建立数据库连接的方法分析
Feb 11 #PHP
You might like
PHP4实际应用经验篇(9)
2006/10/09 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
PHP插件PHPMailer发送邮件功能
2017/02/28 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
Javascript 读后台cookie代码
2008/09/15 Javascript
JavaScript的public、private和privileged模式
2009/12/28 Javascript
innerText 使用示例
2014/01/23 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
js仿淘宝商品放大预览功能
2017/03/15 Javascript
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
JS中验证整数和小数的正则表达式
2018/10/08 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
gulp构建小程序的方法步骤
2019/05/31 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
countup.js实现数字动态叠加效果
2019/10/17 Javascript
JS代码简洁方式之函数方法详解
2020/07/28 Javascript
python实现一次创建多级目录的方法
2015/05/15 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
Python多进程写入同一文件的方法
2019/01/14 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
css3实现的下拉菜单效果示例
2014/01/22 HTML / CSS
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
New Balance比利时官方网站:购买鞋子和服装
2021/01/15 全球购物
servlet面试题
2012/08/20 面试题
一份婚庆公司创业计划书
2014/01/11 职场文书
演讲稿的格式及范文
2014/08/22 职场文书
2015大学生入党个人自传
2015/06/26 职场文书
Python基础之Socket通信原理
2021/04/22 Python
ConstraintValidator类如何实现自定义注解校验前端传参
2021/06/18 Java/Android
javascript Number 与 Math对象的介绍
2021/11/17 Javascript
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript