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中Session的概念
Oct 09 PHP
让PHP更快的提供文件下载的代码
Jun 13 PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
Apr 23 PHP
深入Memcache的Session数据的多服务器共享详解
Jun 13 PHP
PHP生成sitemap.xml地图函数
Nov 13 PHP
php curl模拟post请求小实例
Nov 13 PHP
php配合jquery实现增删操作具体实例
Dec 12 PHP
php中动态修改ini配置
Oct 14 PHP
php实现统计网站在线人数的方法
May 12 PHP
简单了解PHP编程中数组的指针的使用
Nov 30 PHP
如何写php守护进程(Daemon)
Dec 30 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
Aug 10 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
星际中的相关伤害
2020/03/04 星际争霸
php 文章采集正则代码
2009/12/28 PHP
用PHP将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
PHP mcrypt可逆加密算法分析
2011/07/19 PHP
php中\r \r\n \t的区别示例介绍
2014/02/08 PHP
CodeIgniter视图使用注意事项
2016/01/20 PHP
javascript与CSS复习(二)
2010/06/29 Javascript
自用js开发框架小成 学习js的朋友可以看看
2010/11/16 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
2014/03/17 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
关于JS 预解释的相关理解
2016/06/28 Javascript
JS实现保留n位小数的四舍五入问题示例
2016/08/03 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
提高Web性能的前端优化技巧总结
2017/02/27 Javascript
vue 多入口文件搭建 vue多页面搭建的实例讲解
2018/03/12 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
2018/04/26 jQuery
详解Angular中通过$location获取地址栏的参数
2018/08/02 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
详解关闭令人抓狂的ESlint 语法检测配置方法
2019/10/28 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
uni-app如何页面传参数的几种方法总结
2020/04/28 Javascript
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
python安装教程 Pycharm安装详细教程
2017/05/02 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
西班牙在线药店:DosFarma
2020/03/28 全球购物
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
上课打牌的检讨书
2014/02/15 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android