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程序员面试 切忌急功近利(更需要注重以后的发展)
Sep 01 PHP
php设计模式 Prototype (原型模式)代码
Jun 26 PHP
让Json更懂中文(JSON_UNESCAPED_UNICODE)
Oct 27 PHP
解析php中var_dump,var_export,print_r三个函数的区别
Jun 21 PHP
php中如何使对象可以像数组一样进行foreach循环
Aug 09 PHP
php中fgetcsv()函数用法实例
Nov 28 PHP
php实现向javascript传递数组的方法
Jul 27 PHP
PHP实现批量检测网站是否能够正常打开的方法
Aug 23 PHP
PHP构造二叉树算法示例
Jun 21 PHP
php表单习惯用的正则表达式
Oct 11 PHP
实例讲解php实现多线程
Jan 27 PHP
PHP文件操作简单介绍及函数汇总
Dec 11 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
图书管理程序(一)
2006/10/09 PHP
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
PHP计划任务、定时执行任务的实现代码
2011/04/23 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
JavaScript实现网页图片等比例缩放实现代码及调用方式
2013/02/25 Javascript
浅析jquery某一元素重复绑定的问题
2014/01/03 Javascript
jquery实现漂亮的二级下拉菜单代码
2015/08/26 Javascript
iScroll.js 使用方法参考
2016/05/16 Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
2017/11/22 Javascript
vue2.0 datepicker使用方法
2018/02/04 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
2018/06/13 Javascript
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
python3 shelve模块的详解
2017/07/08 Python
Python2.7下安装Scrapy框架步骤教程
2017/12/22 Python
python3.5绘制随机漫步图
2018/08/27 Python
python类的实例化问题解决
2019/08/31 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
2020/01/13 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
python-docx文件定位读取过程(尝试替换)
2020/02/13 Python
基于pygame实现童年掌机打砖块游戏
2020/02/25 Python
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
基于html5 canvas做批改作业的小插件
2020/05/20 HTML / CSS
巴西图书和电子产品购物网站:Saraiva
2017/06/07 全球购物
StringBuilder和String的区别
2015/05/18 面试题
使用C#编写创建一个线程的代码
2013/01/22 面试题
会计专业毕业自荐书范文
2014/02/08 职场文书
怎样写好自我评价呢?
2014/02/16 职场文书
我的教育故事演讲稿
2014/05/04 职场文书
建筑工地宣传标语
2014/06/18 职场文书
生活小常识广播稿
2014/09/16 职场文书
退学证明范本3篇
2014/10/29 职场文书
2014年驾驶员工作总结
2014/11/18 职场文书
交通安全教育主题班会
2015/08/12 职场文书