krlnwll/php-name-parser

此包最新版本(1.0.3)没有可用的许可证信息。

PHP库,用于将名称拆分为各自的组件(首位、姓氏等)

1.0.3 2017-03-05 17:49 UTC

This package is not auto-updated.

Last update: 2024-09-28 19:45:43 UTC


README

PHP库,用于将名称拆分为各自的组件。除了检测首名和姓氏外,此库还尝试处理前缀、后缀、首字母和复合姓氏,如"Von Fange"。它还规范化前缀(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"格式
  • 将名称解析与规范化、大小写分离,并使其可选
  • 将字典从代码中分离出来,以便更容易进行本地化
  • 添加常用的名称库,以允许进行性别检测等操作

相同逻辑,不同语言

致谢与许可证