samsonasik / naming
人名命名过滤器和验证器
3.0.1
2023-01-15 22:06 UTC
Requires
- php: ^8.1
- laminas/laminas-filter: ^2.31
- laminas/laminas-validator: ^2.29
- samsonasik/array-lookup: ^1.3
- symfony/polyfill-mbstring: ^1.27
- webmozart/assert: ^1.11
Requires (Dev)
- kahlan/kahlan: ^5.2.2
- laminas/laminas-coding-standard: ^2.5
- php-coveralls/php-coveralls: ^2.5.3
- phpstan/phpstan: ^1.9.11
- phpstan/phpstan-webmozart-assert: ^1.2.2
- rector/rector: dev-main
- squizlabs/php_codesniffer: ^3.7.1
README
Naming 是一个具有多字节字符串检查支持的人名过滤器和验证器库,扩展了 Laminas
过滤器和验证器,同时也可以独立使用。
安装
composer require samsonasik/naming
过滤器流程
- 移除标签
- 字符串修剪
- 将每个单词的首字母转换为大写,之后将其余字母转换为小写
- 将双空格替换为单空格
- 如果存在,在
'
和-
字符后转换字符串为大写
示例
验证检查
- 允许的字符:字母、连字符、撇号、空格、句点。
- 不允许的
- 包含数字
- 特殊字符
- 单个
.
字符 - 单个
-
字符 - 单个
'
字符 - 连续的
.
字符 - 连续的
-
字符 - 连续的
'
字符 - 句点不在每个单词的末尾
与 laminas-form 实例一起使用
use Naming\Filter; use Naming\Validator; use Laminas\Form\Element\Text; use Laminas\Form\Form; use Laminas\InputFilter\InputFilterProviderInterface; class ContactForm extends Form implements InputFilterProviderInterface { public function init() { $this->add([ 'type' => Text::class, 'name' => 'fullname', 'options' => [ 'label' => 'Full name', ], ]); } public function getInputFilterSpecification() { return [ [ 'name' => 'fullname', 'required' => true, 'filters' => [ [ 'name' => Filter\Naming::class ], ], 'validators' => [ [ 'name' => Validator\Naming::class, ], ], ], ]; } }
独立使用
use Naming\Filter; use Naming\Validator; include 'vendor/autoload.php'; // ... VALID $filtered = (new Filter\Naming())->filter('Abdul malik ikhsan'); $validator = new Validator\Naming(); echo $filtered; // Abdul Malik Ikhsan var_dump($validator->isValid($filtered)); // true // ... INVALID $filtered = (new Filter\Naming())->filter('Abdul....'); $validator = new Validator\Naming(); echo $filtered; // Abdul.... var_dump($validator->isValid($filtered)); // false var_dump(\current($validator->getMessages())); /* "Consecutive "."s are not allowed" */
贡献
非常欢迎贡献。请阅读 CONTRIBUTING.md