我遇到一个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.