curiolabs / name-parser
PHP 库,用于解析包含完整名称的字符串,将其分解为其各个部分
v1.3.2
2018-11-26 17:52 UTC
Requires
- php: >=7.1
Requires (Dev)
- php-coveralls/php-coveralls: ^2.1
- php-mock/php-mock-phpunit: ^2.1
- phpunit/phpunit: ^7.0
- dev-master
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.6
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.0
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- 0.1.1
- 0.1
- dev-feature/lastname-remapping
- dev-feature/update-readme
- dev-feature/allow-salutation-at-end
- dev-feature/explicit-lastname-prefix-getter
- dev-feature/allow-nicknames-at-end
- dev-feature/languages
This package is auto-updated.
Last update: 2024-09-19 20:43:45 UTC
README
目的
这是一个通用的、语言无关的名称解析器。
它的目的是将包含问候语、首字母缩写、后缀等可能的单个字符串拆分为有意义的部分,如名、姓、首字母等。
它主要针对英语姓名,但只要它们使用拉丁字母拼写,与非英语姓名也能很好地工作。
例如 Mr Anthony R Von Fange III 被解析为
- 问候语: Mr.
- 名: Anthony
- 首字母: R
- 姓: von Fange
- 后缀: III
功能
支持的格式
此解析器可以处理带逗号和不带逗号的名格式
... [firstname] ... [lastname] ...
... [lastname] ..., ... [firstname] ...
... [lastname] ..., ... [firstname] ..., [suffix]
支持的各个部分
- 问候语(例如 Mr、Mrs、Dr 等)
- 名
- 中间名
- 首字母(单个字母,可能后跟一个点)
- 昵称(括号、方括号等内的部分)
- 姓(也支持前缀如 von、de 等)
- 后缀(Jr、Senior、3rd、PhD、等)
其他功能
- 支持多语言问候语、后缀和姓前缀
- 可自定义昵称分隔符
- 可自定义所有输出字符串的规范化(原始值仍然可访问)
- 可自定义空白字符
示例
在 解析器单元测试 中可以找到超过 80 种不同成功解析的名格式。
设置
composer require CurioLabs/name-parser
用法
基本用法
<?php $parser = new CurioLabs\NameParser\Parser(); $name = $parser->parse($input); echo $name->getSalutation(); echo $name->getFirstname(); echo $name->getLastname(); echo $name->getMiddlename(); echo $name->getNickname(); echo $name->getInitials(); echo $name->getSuffix(); print_r($name->getAll()); // all parts as an associative array echo $name; // re-prints the full normalised name
对于缺少的部分,将返回一个空字符串。
特殊部分检索功能
显式姓部分
您可以使用以下方法分别检索姓前缀和纯姓
echo $name->getLastnamePrefix(); echo $name->getLastname(true); // true enables strict mode for pure lastnames, only
带有规范化包装的昵称
默认情况下,getNickname()
返回昵称的纯字符串。但是,您可以传递 true
以应用与 echo $name
相同的规范化括号包装。
echo $name->getNickname(); // The Giant echo $name->getNickname(true); // (The Giant)
设置语言
$parser = new CurioLabs\NameParser\Parser([ new CurioLabs\NameParser\Language\English(), //default new CurioLabs\NameParser\Language\German(), ])
设置昵称分隔符
$parser = new CurioLabs\NameParser\Parser(); $parser->setNicknameDelimiters(['(' => ')']);
设置空白字符
$parser = new CurioLabs\NameParser\Parser(); $parser->setWhitespace("\t _.");
限制问候语的位置
$parser = new CurioLabs\NameParser\Parser(); $parser->setMaxSalutationIndex(2);
这将要求问候语出现在给定输入字符串的前两个单词中。默认为输入字符串单词数量的一半,这意味着问候语可能出现在名部分的前半部分。
许可证
THE ICONIC Name Parser PHP 库在 MIT 许可证下发布。