如何获得姓氏第一inital

如何获得姓氏第一inital

问题描述:

可能重复:
Regex - Return First and Last Name如何获得姓氏第一inital

嗨,

我存储在一个领域用户的全名。我怎样才能得到完整的名字和姓氏第一首。这就是我使用的是现在:

$first = substr($full_n, 0, strpos($full_n,' ')); 
+7

需要更多信息。你打算如何处理Butros Butros Ghali? (最后2个字)'希拉里克林顿'? (最后2个字)'约翰菲茨杰拉德肯尼迪'(最后1个字)? '卡尔Theodor玛丽亚尼古拉斯约翰雅各布菲利普弗朗茨约瑟夫西尔维斯特Freiherr冯和祖Guttenberg'(最后2个字,这是一个真名!) – 2011-04-27 19:18:35

+0

@佩卡没有想到这一点。谢谢。 – AAA 2011-04-27 19:25:39

(不是一个答案,但过大是注释)

有没有办法解决这个问题,你就只能用什么方式将你裂伤人民的名称来决定。

已经有好几个体面的例子,但是他们在Pekka的评论中都会失败。有些名字如Hillary Rodham Clinton通常与Hillary Rodham-Clinton连字,并且不会有问题。

更简单的常见示例如John von NeumannPhillip de la Cruz仍然会失败。

嗯,你几乎有...

如果是保证你的用户将有名字(只是第一和最后,在任何无空格),那么你可能只是这样做:

$full_n = 'Demian Brecht'; 
$first = substr($full_n, 0, strpos($full_n,' ')+2); 
print_r($first); 

但是,如果你处理> 2名,那么你就必须重新考虑你的LO GIC。

$full_n = trim($full_n); // remove extra spaces 

$first_name = substr($full_n, 0, strpos($full_n, ' ')); 
$last_initial = substr($full_n, strrchr($full_n, ' '), 1); 

$result = trim($first_name . ' ' . $last_initial); 

我很难理解这个问题。如果你想要完整的名字和姓氏的第一个字母。

$firstwithlastnameinitial = substr($full_n, 0, strpos($full_n, ' ')) . substr($full_n, strpos($full_n, ' ') + 1, 1); 

OR

list ($fname, $lname) = explode(' ', $full_n, 2); 
$lastwithfirstinitial = $fname . substr($lname, 0, 1); 

如果你想第一个名字的首字母全姓:

$lastwithfirstinitial = substr($full_n, strpos($full_n, ' ') + 1, strlen($full_n)) . substr($full_n, 0, 1); 

这应该检索姓氏加上首字母。或者更容易阅读的东西。

list ($fname, $lname) = explode(' ', $full_n, 2); 
$lastwithfirstinitial = $lname . substr($fname, 0, 1); 

list ($first, $last) = explode(' ', $full_n, 2); 
echo "$first {$last[0]}."; 

不会超过两个名字工作太,像所有其他的解决方案。如果你想要做更多的事情,你应该分开保存所有的(姓,名,姓......),而不仅仅是显示。

更新:

启发BE佩卡(问题的意见;))

$names = explode(' ', $full_n); 
$first = array_shift($names); 
$last = array_pop($names); 
echo "$first {$last[0]}."; 

这适用于任意(> = 2)名称的数量,但将只显示第一个(完整)和最后(缩短)。 “Schmidt-Mueller”之类的东西看起来很好奇(“S.”)。

+0

$ last_hyphened = explode(' - ',$ last); foreach($ last_hyphened as $ lnh){ $ last_initials + = substr($ lnh,1); } ....这将允许您使用'$ last_initials',无论连字符名称的数量多少{Schmidt-Mueeler,Rodham-Clinton} – DevlshOne 2012-03-28 19:19:42