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验证码类代码( 最新修改,完全定制化! )
Dec 02 PHP
解析curl提交GET,POST,Cookie的简单方法
Jun 29 PHP
php header功能的使用
Oct 28 PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
Feb 24 PHP
PHP将session信息存储到数据库的类实例
Mar 04 PHP
php实现购物车功能(上)
Jul 23 PHP
PHP中如何防止外部恶意提交调用ajax接口
Apr 11 PHP
Docker 如何布置PHP开发环境
Jun 21 PHP
php  单例模式详细介绍及实现源码
Nov 05 PHP
php源码的使用方法讲解
Sep 26 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
Oct 08 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 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
php读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
CI框架的安全性分析
2016/05/18 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
jquery ui dialog里调用datepicker的问题
2009/08/06 Javascript
突发奇想的一个jquery插件
2010/11/19 Javascript
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
2014/04/25 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
微信小程序 九宫格实例代码
2017/01/21 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
2018/10/12 Javascript
亲自动手实现vue日历控件
2019/06/26 Javascript
原生微信小程序开发中 redux 的使用详解
2021/02/18 Javascript
[01:01:52]完美世界DOTA2联赛PWL S2 GXR vs Magma 第二场 11.25
2020/11/26 DOTA
django使用html模板减少代码代码解析
2017/12/12 Python
查找python项目依赖并生成requirements.txt的方法
2018/07/10 Python
opencv python统计及绘制直方图的方法
2019/01/21 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
python集合的创建、添加及删除操作示例
2019/10/08 Python
Python实现元素等待代码实例
2019/11/11 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
2020/01/16 Python
使用tensorboard可视化loss和acc的实例
2020/01/21 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
党员培训思想汇报
2014/01/07 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
小学生通知书评语
2014/12/31 职场文书
2015大一新生军训感言
2015/08/01 职场文书
python自动计算图像数据集的RGB均值
2021/06/18 Python