2012-07-13 86 views
4

在閱讀了一些已經提出的問題並檢查了其他幾個網站之後,我仍然沒有進一步尋找一種簡單的方法來取得像「Jake Whiteman」這樣的全名,並對其進行修剪,使其在網頁上顯示爲「Jake W.」。顯然沒有語音標記,所以沒有任何混淆。縮短全名,所以姓氏只是第一個字母

任何人有任何想法如何做到這一點?我相信它可能只是尋找空白區域然後修整姓氏的問題,我似乎無法找到一個辦法。

在此先感謝!

回答

6
$names = explode(" ", $name); 
echo $names[0]." ".$names[1][0]; 
+1

使用數組語法 – 2012-07-13 02:55:36

+0

乾杯幹得漂亮!感激! – 2012-07-13 03:08:42

+0

也許無關緊要,但Shamus O'Callaghan呢? – Josh 2012-07-13 03:50:23

1
$name = "Jake Whiteman"; 
$names = explode(' ', $name); //$names[0] = "Jake", $names[1] = "Whiteman" 
echo $names[0]." ".substr($names[1], 0,1)."."; 
2

假設他們的格式總是「[其它名稱]姓氏」,使得最後一個字總是最後的名字,你可以通過它的分隔符[空格]通過分成令牌PHP函數爆炸()(http://php.net/manual/en/function.explode.php)

// Given 
$name = "Jake Whiteman"; 

// Process 
// Tokenize, getting separate names 
$names = explode(' ', $name); 
// Pop last name into variable $last_name, keep remaining names in $names 
$last_name = array_pop($names); 
// Get last initial 
$last_initial = $last_name[0]; 

// Put first names back together 
$beginning = implode(' ', $names); 
$full_name = $beginning.' '.$last_initial.'.'; 

您可以在一個功能把所有在一起:

function nameWithLastInitial($name) { 
    $names = explode(' ', $name); 
    $last_name = array_pop($names); 
    $last_initial = $last_name[0]; 
    return implode(' ', $names).' '.$last_initial.'.'; 
} 
$name = "Jake Whiteman"; 
echo nameWithLastInitial($name); // Should print 'Jake W.' 
+0

這比我的版本更強大。 – sean 2012-07-13 02:57:25

+1

關於字符串格式和數組長度,仍然有很多假設:)。健壯性只對需求有用。如果你可以假設一個更簡單的解決方案,那就去做吧,無論如何它通常會有更好的表現。 – garromark 2012-07-13 02:59:42

+0

這是非常真實的。 – sean 2012-07-13 03:01:03

5

您可以使用此代碼。這將適用於3個措辭的名字,假設第二個單詞是中間名,只有最後一個名字會被截斷。

<?php 

$name = "Jake Awesome Whiteman"; 
$separate = explode(" ", $name); 
$last = array_pop($separate); 

echo implode(' ', $separate)." ".$last[0]."."; 

?> 
1

當只有名字和用戶輸入多個名稱,這將是有益的

<!DOCTYPE html> 
<html> 
<head> 
<title></title> 
</head> 
<body> 
<?php 

$userName = "Jakeds hfg gsd"; 
if(preg_match('/\s/',$userName)) { 
$separate = explode(" ", $userName); 
$last = array_pop($separate); 
$first = mb_strimwidth($separate[0], 0 , 15); 
echo $first." ".$last[0]."."; 
} else { 
$first = mb_strimwidth($userName, 0 , 15); 
echo $first; 
} 

//echo $first." ".$last[0]."."; 

?> 
</body> 
</html> 
相關問題