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循环输出数据库内容的代码
May 24 PHP
网友原创的PHP模板类代码
Sep 07 PHP
PHP 最大运行时间 max_execution_time修改方法
Mar 08 PHP
PHP无刷新上传文件实现代码
Sep 19 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
Jan 22 PHP
php+highchats生成动态统计图
May 21 PHP
destoon实现调用自增数字从1开始的方法
Aug 21 PHP
如何使用Gitblog和Markdown建自己的博客
Jul 31 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
Feb 06 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
May 12 PHP
asp.net和php的区别点总结
Oct 10 PHP
Laravel6.18.19如何优雅的切换发件账户
Jun 14 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调用MySQL存储过程的方法集合(推荐)
2013/07/03 PHP
php查询ip所在地的方法
2014/12/05 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
node.js中的console.warn方法使用说明
2014/12/09 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
JS实现生成会变大变小的圆环实例
2015/08/05 Javascript
javascript中for/in循环及使用技巧
2015/09/01 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
JS键盘版计算器的制作方法
2016/12/03 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
vue操作动画的记录animate.css实例代码
2019/04/26 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
[37:29]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.19
2020/11/19 DOTA
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
用python写扫雷游戏实例代码分享
2018/05/27 Python
python数值基础知识浅析
2019/11/19 Python
使用OpenCV circle函数图像上画圆的示例代码
2019/12/27 Python
TensorFlow2.0矩阵与向量的加减乘实例
2020/02/07 Python
Django生成数据库及添加用户报错解决方案
2020/10/09 Python
html5 实现客户端验证上传文件的大小(简单实例)
2016/05/15 HTML / CSS
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
eBay德国站:eBay.de
2017/09/14 全球购物
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
大学生毕业的自我鉴定
2013/11/13 职场文书
青年志愿者活动总结
2014/04/26 职场文书
冬季安全检查方案
2014/05/23 职场文书
2014年超市员工工作总结
2014/11/18 职场文书
幼儿园中班教师个人总结
2015/02/05 职场文书
民事撤诉申请书范本
2015/05/18 职场文书
快速学习Oracle触发器和游标
2021/06/30 Oracle
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS