2011-04-27 119 views
4

可能重複:
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

回答

1

(不是一個答案,但過大是註釋)

有沒有辦法解決這個問題,你就只能用什麼方式將你裂傷人民的名稱來決定。

已經有好幾個體面的例子,但是他們在Pekka的評論中都會失敗。有些名字如Hillary Rodham Clinton通常與Hillary Rodham-Clinton連字,並且不會有問題。

更簡單的常見示例如John von NeumannPhillip de la Cruz仍然會失敗。

2

嗯,你幾乎有...

如果是保證你的用戶將有名字(只是第一和最後,在任何無空格),那麼你可能只是這樣做:

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

但是,如果你處理> 2名,那麼你就必須重新考慮你的LO GIC。

1
$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); 
1

我很難理解這個問題。如果你想要完整的名字和姓氏的第一個字母。

$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); 
5
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