accentinteractive/laravel-disallowlister

使用内置的Laravel验证器或直接调用外观函数,验证数据是否与一个或多个不允许的列表相匹配。支持通配符。

v0.4.0 2021-08-27 16:34 UTC

This package is auto-updated.

Last update: 2024-08-27 23:12:00 UTC


README

轻松测试字符串与任何不允许的字符串数组。支持fnmatch通配符,如*和?。

accentinteractive/disallowlister 包含一个外观函数Disallowlister和一个自定义验证规则disallowlister。您可以在配置中设置默认不允许的字符串数组,或者使用Disallowlister:add()Disallowlister:remove()添加和移除不允许的字符串

Latest Version on Packagist Build Status Quality Score Total Downloads

此特定于Laravel的包测试字符串是否与不允许的列表相匹配。这是对平台无关的accentinteractive/disallowlister的Laravel实现。

如果您在寻找一个与框架无关的实现,请查看https://github.com/accentinteractive/disallowlister

有关所有选项的列表,请查看https://github.com/accentinteractive/disallowlister#readme

isDisallowed() 方法可以使用通配符,如*和?。

在底层,accentinteractive/disallowtester 使用fnmatch(),因此您可以使用与该php函数相同的通配符(globbing通配符模式)。

  • *sex* 不允许 sexsexuality 和 bisexual。

  • cycle* 不允许 cycle 和 cycles,但不允许 bicycle。

  • m[o,u]m 不允许 mom 和 mum,但允许 mam。

  • m?n 不允许 man 和 men,但允许 moon。

  • 安装

  • 示例

  • 配置设置

安装

您可以通过composer安装此包

composer require accentinteractive/laravel-disallowlister

可选地,您可以使用以下命令发布配置文件

php artisan vendor:publish --provider="Accentinteractive\LaravelDisallowlister\LaravelDisallowlisterServiceProvider" --tag="config"

使用

在配置中设置不允许的列表

  1. 发布配置文件,运行php artisan vendor:publish --provider="Accentinteractive\LaravelDisallowlister\LaravelDisallowlisterServiceProvider" --tag="config"
  2. disallowlister.lists.default 中设置不允许的字符串的默认数组
  3. 如果您想使用多个不允许的列表,您可以将额外的不允许的字符串数组添加到 disallowlister.lists 中,例如 disallowlister.lists.my_list

使用不允许的列表验证规则

默认情况下,验证器使用默认不允许的列表。

// Use the disallowlist validator with the default disallowlist. 
$rules = [
    'user_input' => 'disallowlister'
];

但是,您也可以传递给验证器要使用哪个不允许的列表。

// Use the disallowlist validator with the my_list disallowlist. 
$rules = [
    'user_input' => 'disallowlister:default',
    'user_emails' => 'disallowlister:my_email_list'
];

大小写敏感度

默认情况下,匹配不是大小写敏感的。您可以在配置中设置大小写敏感。

config(['disallowlister.is_case_sensitive' => true]);

整个单词检查

默认情况下,检查整个字符串。您可以在配置中设置为按单词检查。

config(['disallowlister.match_word_for_word' => true]);

直接使用类

use Accentinteractive\LaravelDisallowlister\Facades\Disallowlister;

// Call the facade directly, using the default disallowlist
DisallowLister::isDisallowed('Earn $4,000 A DAY working from HOME!!!');

// Call the facade directly, using a specific disallowlist
DisallowLister::setDisallowList(config('disallowlister.lists.mylist'))
              ->isDisallowed('Earn $4,000 A DAY working from HOME!!!');

// Add and remove items on the facade
DisallowLister::add('foo')
              ->add(['*bar*', 'b?t'])
              ->remove('b?t')
              ->isDisallowed('Earn $4,000 A DAY working from HOME!!!');

测试

composer test

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

贡献

有关详细信息,请参阅CONTRIBUTING

安全

如果您发现任何与安全相关的问题,请通过电子邮件joost@accentinteractive.nl联系,而不是使用问题跟踪器。

鸣谢

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件