2012-07-26 83 views
-2

nickb最初提供了這些代碼。這最初做的是,當用戶輸入文本時,它會通過獲取輸入的每個單詞的第一個字母將其轉換爲縮寫詞。我現在想要做的是包括輸入文本的最後一個字作爲輸出的一部分。例如:如果用戶輸入自動取款機,則輸出將是:ATM機。到目前爲止,這就是我所提出的,不幸的是,我現在處於虧損狀態,並且迫切希望能夠實現這一目標。請幫忙。輸入文本的首字母縮寫+最後一個字。 PHP

function convert($text) 
{ 
    $acronym = array(); 
    $text2 = explode(' ', $text); 
    foreach(explode(' ', $text) as $word) 
    {     
     $acronym[] = strtoupper($word[0]); 
    } 
    $count = str_word_count($acronym); 
    array_push($acronym, $text2[$count]); 
    echo $text2[$count]; 
    return implode('', $acronym); 
} 

回答

3

它看起來像你正在一個一個地在陣列中使用$count-1

然而,你的代碼可以提高到這樣的:

function convert($text) { 
    return preg_replace('/\b(.).*?\b\s*/',"$1",$text).strrchr($text," "); 
} 
// input: convert("Department of Redundancy Department"); 
// output: DoRD Department 
+1

+1難以理解的正則表達式的解決方案 – 2012-07-26 15:18:25

+0

感謝您的幫助@Kolink,但是你提供的代碼給出了這樣的輸出: ATMachine機 我需要的是有一個輸出,它看起來像: ATM機 – user1242749 2012-07-26 15:19:06

+0

* *注意** @ user1242749 Kolink表示在這一行中:'array_push($ acronym,$ text2 [$ count]);'使用'count-1'而不是'$ count',因爲在一個包含3個項目的數組中,最後一項在'[2]'。 – 2012-07-26 15:19:50

1

看起來,這不是清楚你的代碼做什麼。所以讓我們從頭開始編寫新的代碼,但不要複製它,但你應該輸入它。我在這裏使用的所有函數都記錄在PHP手冊中。如果一個功能是新的給你,或者你不知道一個或其他參數,只是讀了起來,學習:

$words = str_word_count($text, 2); 

這行代碼提取從$text所有單詞到一個數組$words

要獲得的最後一個字,你只需要獲得最後一個數組項:

$last_word = end($words); 

所以這已經是半完成的工作。現在,你要提取所有的第一個字母:

$first_letters = array(); 
foreach ($words as $word) { 
    $first_letters[] = substr($word, 0, 1); 
} 

有了這樣做,所有的第一個字母是陣列$first_letters在和最後一個字是字符串變量$last_word英寸有一個警告。如果$text中沒有字詞,則這不起作用。只是說,自己檢查一下。

現在讓我們編譯最終的字符串:

$buffer = implode('', $first_letters); 

是將數組轉換成字符串的簡單方法。然後你只需要添加一個空格,最後一個字:

$buffer .= ' '; 

,它是將一個空格字符,而不是最後(明顯的,對吧?):

$buffer .= $last_word; 

帶來的一切融合在一起。

快樂編碼。

相關問題