accentinteractive / laravel-disallowlister
使用内置的Laravel验证器或直接调用外观函数,验证数据是否与一个或多个不允许的列表相匹配。支持通配符。
Requires
- php: ^7.3|^8.0
- accentinteractive/disallowlister: ^0.4
- illuminate/console: ^6.0|^7.0|^8.0
- illuminate/filesystem: ^6.0|^7.0|^8.0
- illuminate/support: ^6.0|^7.0|^8.0
Requires (Dev)
- orchestra/testbench: 4.*|5.*|6.*
- phpunit/phpunit: ^8.4|^9.0
README
轻松测试字符串与任何不允许的字符串数组。支持fnmatch
通配符,如*和?。
accentinteractive/disallowlister
包含一个外观函数Disallowlister
和一个自定义验证规则disallowlister
。您可以在配置中设置默认不允许的字符串数组,或者使用Disallowlister:add()
和Disallowlister:remove()
添加和移除不允许的字符串
此特定于Laravel的包测试字符串是否与不允许的列表相匹配。这是对平台无关的accentinteractive/disallowlister
的Laravel实现。
如果您在寻找一个与框架无关的实现,请查看https://github.com/accentinteractive/disallowlister
有关所有选项的列表,请查看https://github.com/accentinteractive/disallowlister#readme。
isDisallowed()
方法可以使用通配符,如*和?。
在底层,accentinteractive/disallowtester
使用fnmatch()
,因此您可以使用与该php函数相同的通配符(globbing通配符模式)。
-
*sex*
不允许 sex,sexuality 和 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"
使用
在配置中设置不允许的列表
- 发布配置文件,运行
php artisan vendor:publish --provider="Accentinteractive\LaravelDisallowlister\LaravelDisallowlisterServiceProvider" --tag="config"
- 在
disallowlister.lists.default
中设置不允许的字符串的默认数组 - 如果您想使用多个不允许的列表,您可以将额外的不允许的字符串数组添加到
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)。有关更多信息,请参阅许可文件。