samsonasik/naming

人名命名过滤器和验证器

3.0.1 2023-01-15 22:06 UTC

This package is auto-updated.

Last update: 2024-09-08 17:02:26 UTC


README

Latest Version ci build Code Coverage PHPStan Downloads

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