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 相关文章推荐
用Apache反向代理设置对外的WWW和文件服务器
Oct 09 PHP
多重?l件?合查?(二)
Oct 09 PHP
谈谈PHP的输入输出流
Feb 14 PHP
php zend解密软件绿色版测试可用
Apr 14 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
Oct 24 PHP
探讨PHP调用时间格式的参数详解
Jun 06 PHP
PHP中fwrite与file_put_contents性能测试代码
Aug 02 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
Jun 05 PHP
php json_encode()函数返回json数据实例代码
Oct 10 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
Mar 04 PHP
php 输出json及显示json中的中文汉字详解及实例
Nov 09 PHP
php arsort 数组降序排序详细介绍
Nov 17 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学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
php递归遍历多维数组的方法
2015/04/18 PHP
深入浅析Yii admin的权限控制
2016/08/31 PHP
PHP检查URL包含特定字符串实例方法
2019/02/11 PHP
利用js对象弹出一个层
2008/03/26 Javascript
一个选择最快的服务器转向代码
2009/04/27 Javascript
Jquery封装tab自动切换效果的具体实现
2013/07/13 Javascript
jQuery选择器中含有空格的使用示例及注意事项
2013/08/25 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
JS脚本defer的作用示例介绍
2014/01/02 Javascript
js获取视频时长代码
2014/04/10 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
vue中轮训器的使用
2019/01/27 Javascript
npm qs模块使用详解
2020/02/07 Javascript
基于JS实现视频上传显示进度条
2020/05/12 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
Python 中 Virtualenv 和 pip 的简单用法详解
2017/08/18 Python
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
在线购买澳大利亚设计师手拿包和奢华晚装手袋:Olga Berg
2019/03/20 全球购物
教师研修随笔感言
2014/01/23 职场文书
副总经理岗位职责
2014/03/16 职场文书
《李广射虎》教学反思
2014/04/27 职场文书
教师节表彰会主持词
2015/07/06 职场文书
数学备课组工作总结
2015/08/12 职场文书
区域销售大会开幕词
2016/03/04 职场文书
使用Java去实现超市会员管理系统
2022/03/18 Java/Android