aait / php-name-parser
PHP库,用于将名称分割成各自的部分(如首名、姓氏等)。joshfraser/PHP-Name-Parser的分支
1.0.1
2017-10-19 07:32 UTC
Requires
- php: ~5.3.0|~5.4.0|~5.5.0|~5.6.0|~7.0.0|~7.1.0|~7.2.0
This package is not auto-updated.
Last update: 2024-09-15 00:35:15 UTC
README
PHP库,用于将名称分割成各自的部分。除了检测首名和姓氏之外,此库还尝试处理前缀、后缀、首字母和复合姓氏,如“冯范格”。它还标准化前缀(Mister -> Mr.)并修正大小写(JOHN SMITH -> John Smith)。
使用方法
include("parser.php");
$parser = new FullNameParser();
$parser->parse_name("Mr Anthony R Von Fange III");
结果
Array (
[nickname] =>
[salutation] => Mr.
[fname] => Anthony
[initials] => R
[lname] => Von Fange
[suffix] => III
)
算法
我们首先将全名分割成单独的单词。然后对第一个和最后一个单词进行词典查找,看它们是否是常见的首部或尾部。接下来,我们取字符串的中间部分(除了前缀和尾部之外的所有内容)并查看除了最后一个单词之外的所有内容。然后我们遍历这些单词并将它们连接起来以形成首名。在这个过程中,我们注意任何复合姓氏的迹象。事实证明,几乎每个复合姓氏都是以16个前缀之一(Von、Van、Vere等)开始的。如果我们看到这些前缀之一,我们就跳出首名循环并继续连接姓氏。我们通过在将每个单词的第一个字母大写之前检查驼峰式命名法来处理大小写问题,并将其余部分小写。我还为句点和破折号编写了特殊案例。我们还有一两个其他特殊案例,例如完全忽略括号中的单词。
检查examples.php以获取测试套件和解析各种名称格式的示例。
待办事项
- 处理"Lname, Fname"格式
- 支持非英语名称(处理Unicode字符并更好地理解全球命名规则)
- 将名称的解析与标准化和大小写分离,并使这些选项可选。
- 添加常见的名称库以允许进行性别检测等操作
相同的逻辑,不同的语言
鸣谢 & 许可证
- 阅读更多关于此PHP名称解析库的灵感来源,由Josh Fraser
- 特别感谢Josh Jones、Timothy Wood、Michael Waskosky、Eric Celeste和Josh Houghtelin对他们的贡献。只要不破坏测试套件,我们总是欢迎拉取请求。
- Apache 2.0许可证发布