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 相关文章推荐
Linux下ZendOptimizer的安装与配置方法
Apr 12 PHP
php中去除所有js,html,css代码
Oct 12 PHP
基于initPHP的框架介绍
Apr 18 PHP
基于python发送邮件的乱码问题的解决办法
Apr 25 PHP
PHP微框架Dispatch简介
Jun 12 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
Jun 12 PHP
PHP使用curl模拟post上传及接收文件的方法
Mar 04 PHP
PHP中spl_autoload_register()函数用法实例详解
Jul 18 PHP
简单实现php上传文件功能
Sep 21 PHP
PHP实现提高SESSION响应速度的几种方法详解
Aug 09 PHP
laravel 之 Eloquent 模型修改器和序列化示例
Oct 17 PHP
PHP实现考试倒计时功能代码
Apr 16 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中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
php自定文件保存session的方法
2014/12/10 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
PHP中的常见魔术方法功能作用及用法实例
2015/07/01 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
2015/12/17 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
2016/05/09 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
2016/08/17 PHP
dojo 之基础篇(二)之从服务器读取数据
2007/03/24 Javascript
javascript下数值型比较难点说明
2010/06/07 Javascript
浅析JavaScript中的typeof运算符
2013/11/30 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
JavaScript实现常用二级省市级联下拉列表的方法
2015/03/25 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
2016/03/11 Javascript
javascript实现dom元素可拖动
2016/03/21 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
2016/09/26 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
使用cookie绕过验证码登录的实现代码
2017/10/12 Javascript
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
React实现全局组件的Toast轻提示效果
2018/09/21 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
python机器学习之贝叶斯分类
2018/03/26 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
2019/08/13 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
django处理select下拉表单实例(从model到前端到post到form)
2020/03/13 Python
基于python判断字符串括号是否闭合{}[]()
2020/09/21 Python
使用HTML5 Canvas为图片填充颜色和纹理的教程
2016/03/21 HTML / CSS
亲子活动总结
2014/04/26 职场文书
中层干部培训方案
2014/06/16 职场文书
2014最新开业庆典策划方案(5篇)
2014/09/15 职场文书
2016年国庆节宣传标语
2015/11/25 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers