abunch/php-name-parser

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

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

1.0 2021-08-22 01:09 UTC

This package is auto-updated.

Last update: 2024-09-22 07:59:45 UTC


README

Build Status

PHP 库,用于将姓名分解为其各自的组件。除了检测首名和姓氏外,此库还尝试处理前缀、后缀、首字母和复合姓氏,如“冯·方格”。它还规范化前缀(先生 -> 先生)并修正大小写(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个前缀之一(冯、范、维、等)开头。如果我们看到其中之一,我们就跳出首名循环,并继续拼接姓氏。我们通过在将每个单词的首字母大写之前检查驼峰式命名和将其他内容小写来处理大小写问题。我还为点和破折号编写了特殊情况。我们还有一两个其他特殊情况,例如完全忽略括号中的单词。

请检查 examples.php 以获取测试套件和各种姓名格式的解析示例。

可能的改进

  • 处理“姓氏,名字”格式
  • 将姓名的解析与规范化、大小写分离,并使其可选
  • 将词典从代码中分离出来,以便更容易进行本地化
  • 添加常见的姓名库,以实现性别检测等功能

相同的逻辑,不同的语言

致谢与许可证