joshfraser/php-name-parser

该软件包最新版本(dev-master)没有可用的许可信息。

PHP 库,用于将姓名拆分成各自的组成部分(首字母、姓氏等)

dev-master 2020-12-09 15:05 UTC

This package is auto-updated.

Last update: 2024-09-09 23:08:21 UTC


README

Build Status

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" 格式
  • 将姓名解析与规范化、大小写处理分离,并使其可选
  • 将字典与代码分离,以便更容易进行本地化
  • 添加常见姓名库,以便进行性别检测等操作

相同的逻辑,不同的语言

致谢 & 许可证