imgusev/sanitizer
Composer 安装命令:
composer require imgusev/sanitizer
包简介
Data sanitizer and Laravel 5 form requests with input sanitation.
README 文档
README
Introduction
Imgusev Sanitizer provides an easy way to format user input, both through the provided filters or through custom ones that can easily be added to the sanitizer library.
Although not limited to Laravel 5 users, there are some extensions provided for this framework, like a way to easily Sanitize user input through a custom FormRequest and easier extensibility.
Example
Given a data array with the following format:
$data = [ 'first_name' => 'john', 'last_name' => '<strong>DOE</strong>', 'email' => ' JOHn@DoE.com', 'birthdate' => '06/25/1980', 'jsonVar' => '{"name":"value"}', 'description' => '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>', 'phone' => '+08(096)90-123-45q', ];
We can easily format it using our Sanitizer and the some of Sanitizer's default filters:
use \Imgusev\Sanitizer\Sanitizer; $filters = [ 'first_name' => 'trim|escape|capitalize', 'last_name' => 'trim|escape|capitalize', 'email' => 'trim|escape|lowercase', 'birthdate' => 'trim|format_date:m/d/Y, Y-m-d', 'jsonVar' => 'cast:array', 'description' => 'strip_tags', 'phone' => 'digit', ]; $sanitizer = new Sanitizer($data, $filters); var_dump($sanitizer->sanitize());
Which will yield:
[
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'john@doe.com',
'birthdate' => '1980-06-25',
'jsonVar' => '["name" => "value"]',
'description' => 'Test paragraph. Other text',
'phone' => '080969012345',
];
It's usage is very similar to Laravel's Validator module, for those who are already familiar with it, although Laravel is not required to use this library.
Filters are applied in the same order they're defined in the $filters array. For each attribute, filters are separered by | and options are specified by suffixing a comma separated list of arguments (see format_date).
Available filters
The following filters are available out of the box:
| Filter | Description |
|---|---|
| trim | Trims a string |
| escape | Escapes HTML and special chars using php's filter_var |
| lowercase | Converts the given string to all lowercase |
| uppercase | Converts the given string to all uppercase |
| capitalize | Capitalize a string |
| cast | Casts a variable into the given type. Options are: integer, float, string, boolean, object, array and Laravel Collection. |
| format_date | Always takes two arguments, the date's given format and the target format, following DateTime notation. |
| strip_tags | Strip HTML and PHP tags using php's strip_tags |
| digit | Get only digit characters from the string |
Adding custom filters
You can add your own filters by passing a custom filter array to the Sanitize constructor as the third parameter. For each filter name, either a closure or a full classpath to a Class implementing the Imgusev\Sanitizer\Contracts\Filter interface must be provided. Closures must always accept two parameters: $value and an $options array:
class RemoveStringsFilter implements Imgusev\Sanitizer\Contracts\Filter { public function apply($value, $options = []) { return str_replace($options, '', $value); } } $customFilters = [ 'hash' => function($value, $options = []) { return sha1($value); }, 'remove_strings' => RemoveStringsFilter::class, ]; $filters = [ 'secret' => 'hash', 'text' => 'remove_strings:Curse,Words,Galore', ]; $sanitize = new Sanitize($data, $filters, $customFilters);
Install
To install, just run:
composer require imgusev/sanitizer ~1.0
And you're done! If you're using Laravel, in order to be able to access some extra functionality you must register both the Service provider in the providers array in config/app.php, as well as the Sanitizer Facade:
'providers' => [ ... Imgusev\Sanitizer\Laravel\SanitizerServiceProvider::class, ]; 'aliases' => [ ... 'Sanitizer' => Imgusev\Sanitizer\Laravel\Facade::class, ];
Laravel goodies
If you are using Laravel, you can use the Sanitizer through the Facade:
$newData = \Sanitizer::make($data, $filters)->sanitize();
You can also easily extend the Sanitizer library by adding your own custom filters, just like you would the Validator library in Laravel, by calling extend from a ServiceProvider like so:
\Sanitizer::extend($filterName, $closureOrClassPath);
You may also Sanitize input in your own FormRequests by using the SanitizesInput trait, and adding a filters method that returns the filters that you want applied to the input.
namespace App\Http\Requests; use App\Http\Requests\Request; use Imgusev\Sanitizer\Laravel\SanitizesInput; class SanitizedRequest extends Request { use SanitizesInput; public function filters() { return [ 'name' => 'trim|capitalize', 'email' => 'trim', ]; } /* ... */
To generate a Sanitized Request just execute the included Artisan command:
php artisan make:sanitized-request TestSanitizedRequest
The only difference with a Laravel FormRequest is that now you'll have an extra 'fields' method in which to enter the input filters you wish to apply, and that input will be sanitized before being validated.
License
IMGusev Sanitizer is open-sourced software licensed under the MIT license
imgusev/sanitizer 适用场景与选型建议
imgusev/sanitizer 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 8 次下载、GitHub Stars 达 0, 最近一次更新时间为 2019 年 07 月 03 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「input」 「laravel」 「sanitation」 「input filter」 「input sanitation」 「input sanitizer」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 imgusev/sanitizer 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 imgusev/sanitizer 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 imgusev/sanitizer 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Yii2 map input widget. Allows you to select geographcal coordinates via a human-friendly inteface.
Widget to add a remaining character counter to text inputs and textareas
Data sanitizer for PHP with built-in Laravel support.
Native (browser) color input field for SilverStripe
Data sanitizer forked from Waavi/Sanitaize with support for Laravel 5 to 8. .
Data sanitizer and Laravel 7 form requests with input sanitation.
统计信息
- 总下载量: 8
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 9
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-07-03