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 相关文章推荐
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
Feb 08 PHP
解析PHP留言本模块主要功能的函数说明(代码可实现)
Jun 25 PHP
如何使用FireFox插件FirePHP调试PHP
Jul 23 PHP
一个好用的PHP验证码类实例分享
Dec 27 PHP
PHP判断数据库中的记录是否存在的方法
Nov 14 PHP
php多线程并发实现方法
Sep 30 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
May 24 PHP
PHP编程实现计算抽奖概率算法完整实例
Aug 09 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
Mar 31 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
PHP的mysqli_select_db()函数讲解
Jan 23 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中的mongodb select常用操作代码示例
2014/09/06 PHP
比较完整的微信开发php代码
2016/08/02 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
2020/10/28 PHP
让网页跳转到指定位置的jquery代码非书签
2013/09/06 Javascript
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
浅谈JavaScript 框架分类
2014/11/10 Javascript
windows8.1+iis8.5下安装node.js开发环境
2014/12/12 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
2015/08/19 Javascript
一些实用性较高的js方法
2016/04/19 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
2017/12/11 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
Vue开发环境跨域访问问题
2020/01/22 Javascript
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
让Python代码更快运行的5种方法
2015/06/21 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
postman模拟访问具有Session的post请求方法
2019/07/15 Python
Python3离线安装Requests模块问题
2019/10/13 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
python中的时区问题
2021/01/14 Python
英国袜子店:Sock Shop
2017/01/11 全球购物
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
eBay加拿大站:eBay.ca
2019/06/20 全球购物
法学个人求职信范文
2014/01/27 职场文书
总经理助理职责
2014/02/04 职场文书
媒体宣传策划方案
2014/05/25 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
人事任命通知
2015/04/20 职场文书
学校社团活动总结
2015/05/07 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python
Python加密与解密模块hashlib与hmac
2022/06/05 Python