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 相关文章推荐
实现分十页分向前十页向后十页的处理
Oct 09 PHP
php 生成饼图 三维饼图
Sep 28 PHP
通过JavaScript或PHP检测Android设备的代码
Mar 09 PHP
php图片缩放实现方法
Feb 20 PHP
php循环创建目录示例分享(php创建多级目录)
Mar 04 PHP
php+ajax无刷新上传图片实例代码
Nov 17 PHP
twig里使用js变量的方法
Feb 05 PHP
php短信接口代码
May 13 PHP
既简单又安全的PHP验证码 附调用方法
Jun 02 PHP
PHP在线打包下载功能示例
Oct 15 PHP
CentOS 上搭建 PHP7 开发测试环境
Feb 26 PHP
PHP控制反转(IOC)和依赖注入(DI)
Mar 13 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操作XML作为数据库的类
2010/12/19 PHP
深入探讨PHP中的内存管理问题
2011/08/31 PHP
Linux环境下搭建php开发环境的操作步骤
2013/06/17 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
php+MySQL实现登录时验证登录名和密码是否正确
2016/05/10 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
window.parent与window.openner区别介绍
2012/04/12 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
将HTML的左右尖括号等转义成实体形式的两种实现方式
2014/05/04 Javascript
javascript常用方法总结
2015/05/14 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
jQuery的ajax下载blob文件
2016/07/21 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
Vue源码解读之Component组件注册的实现
2018/08/24 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
使用vant的地域控件追加全部选项
2020/11/03 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
vue created钩子函数与mounted钩子函数的用法区别
2020/11/05 Javascript
打印出python 当前全局变量和入口参数的所有属性
2009/07/01 Python
Python sys.argv用法实例
2015/05/28 Python
Python 3.6 读取并操作文件内容的实例
2018/04/23 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
CSS3字体效果的设置方法小结
2016/06/13 HTML / CSS
美国高街时尚品牌:OASAP
2016/07/24 全球购物
应届生如何写自荐信
2014/01/05 职场文书
工程采购员岗位职责
2014/03/09 职场文书
医药销售自荐书
2014/05/29 职场文书