在PHP中分割名字的最佳方式

我遇到一个NAME字段,通常格式如下:
FirstName LastName

然而,我也有偶尔的名称是任何这些格式(带前缀或后缀):

Mr. First Last
First Last Jr.

人们认为在PHP中将其分为FirsT / LAST名称变量的安全方法是什么?我不能真正想出任何一切都会在所有时间工作的东西…

正则表达式是处理这样的事情的最佳方法.
尝试这个 – 它拉出前缀,名字,姓氏和后缀:
$array = array(
    'FirstName LastName','Mr. First Last','First Last Jr.','Shaqueal O’neal','D’angelo Hall',);

foreach ($array as $name)
{
    $results = array();
    echo $name;
    preg_match('#^(\w+\.)?\s*([\'\’\w]+)\s+([\'\’\w]+)\s*(\w+\.?)?$#',$name,$results);
print_r($results);
}

结果是这样的:

FirstName LastName
Array
(
    [0] => FirstName LastName
    [1] => 
    [2] => FirstName
    [3] => LastName
)
Mr. First Last
Array
(
    [0] => Mr. First Last
    [1] => Mr.
    [2] => First
    [3] => Last
)
First Last Jr.
Array
(
    [0] => First Last Jr.
    [1] => 
    [2] => First
    [3] => Last
    [4] => Jr.
)
shaqueal o’neal
Array
(
    [0] => shaqueal o’neal
    [1] => 
    [2] => shaqueal
    [3] => o’neal
)
d’angelo hall
Array
(
    [0] => d’angelo hall
    [1] => 
    [2] => d’angelo
    [3] => hall
)

等等…

所以在数组中$array [0]包含整个字符串. $array [2]始终是名字,$array [3]始终是名字.$array [1]是前缀,$array [4](不总是设置)是后缀.我还添加代码来处理“和”,如Shaqueal O’neal和D’angelo Hall.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...