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.MVC的模板标签系统(五)
Sep 05 PHP
ftp类(myftp.php)
Oct 09 PHP
PHP中文URL编解码(urlencode()rawurlencode()
Jul 03 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
php上传图片之时间戳命名(保存路径)
Aug 15 PHP
10款PHP开源商城系统汇总介绍
Jul 23 PHP
解决php表单重复提交实现方法
Sep 29 PHP
Yii2中关联查询简单用法示例
Aug 10 PHP
浅谈PHP安全防护之Web攻击
Jan 03 PHP
使用PHP json_decode可能遇到的坑与解决方法
Aug 03 PHP
laravel ORM 只开启created_at的几种方法总结
Jan 29 PHP
PHP pthreads v3下同步处理synchronized用法示例
Feb 21 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中实现简单的ACL 完结篇
2011/09/07 PHP
php中计算程序运行时间的类代码
2012/11/03 PHP
smarty模板引擎之内建函数用法
2015/03/30 PHP
PHP+Ajax 检测网络是否正常实例详解
2016/12/16 PHP
js里的prototype使用示例
2010/11/19 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
Bootstrap按钮组实例详解
2017/07/03 Javascript
利用require.js与angular搭建spa应用的方法实例
2017/07/19 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
详解基于vue-cli优化的webpack配置
2017/11/06 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
使用Vue 自定义文件选择器组件的实例代码
2020/03/04 Javascript
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
Scrapy框架使用的基本知识
2018/10/21 Python
python读写csv文件方法详细总结
2019/07/05 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
2020/11/17 Python
CSS3之边框多颜色Border-color属性使用示例
2013/10/11 HTML / CSS
HTML5标签大全
2016/11/23 HTML / CSS
党校培训思想汇报
2013/12/30 职场文书
员工工作表扬信范文
2014/01/13 职场文书
贷款委托书范本
2014/04/08 职场文书
环卫处个人工作总结
2015/03/04 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS
python学习之panda数据分析核心支持库
2021/05/07 Python
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python