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下使用SimpleXML 处理XML 文件
Feb 27 PHP
PHP在线生成二维码(google api)的实现代码详解
Jun 04 PHP
PHP 使用MySQL管理Session的回调函数详解
Jun 21 PHP
PHP Curl出现403错误的解决办法
May 29 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
Nov 18 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
Apr 17 PHP
PHP实现导出带样式的Excel
Aug 28 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
Oct 25 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
Nov 15 PHP
老生常谈PHP面向对象之标识映射
Jun 21 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
Jan 26 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
Aug 26 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
thinkphp实现图片上传功能分享
2014/03/04 PHP
PHP图像处理类库MagickWand用法实例分析
2015/05/21 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
php经典趣味算法实例代码
2020/01/21 PHP
有一段有意思的代码-javascript现实多行信息
2007/08/26 Javascript
js 编写规范
2010/03/03 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
微信小程序 生命周期详解
2016/10/12 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
NodeJs 实现简单WebSocket即时通讯的示例代码
2019/08/05 NodeJs
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
[03:04]2018年国际邀请赛典藏宝瓶&莱恩声望物品展示 片尾有彩蛋
2018/06/04 DOTA
Python实现过滤单个Android程序日志脚本分享
2015/01/16 Python
在Python中使用HTMLParser解析HTML的教程
2015/04/29 Python
在Python中操作列表之List.append()方法的使用
2015/05/20 Python
python字典操作实例详解
2017/11/16 Python
Python实现图片尺寸缩放脚本
2018/03/10 Python
Python实现的微信好友数据分析功能示例
2018/06/21 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
python列表推导式入门学习解析
2019/12/02 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
世界汽车零件:World Car Parts
2019/09/04 全球购物
如何执行一个shell程序
2012/11/23 面试题
医学专业毕业生推荐信
2013/11/14 职场文书
计算机专业职业生涯规划范文
2014/01/19 职场文书
做一个有道德的人活动实施方案
2014/08/23 职场文书
承诺书样本
2014/08/30 职场文书
反四风对照检查材料
2014/09/22 职场文书
长江三峡导游词
2015/01/31 职场文书
python opencv旋转图片的使用方法
2021/06/04 Python