2011-02-12 26 views
0

我努力完成以下任務:使字符串中的所有單詞用3個字符以內完全大寫

$string = "i want to convert this string to the following"; 

並將其轉換爲這樣的事情:

echo $string; 
// I Want TO Convert This String TO THE Following 

這樣: 大寫字符串中的所有單詞的第一個字母 ,如果一個單詞不超過3個字符,則在字符串中使整個單詞大寫。 PHP無法做到這一點?

+1

那麼你已經嘗試過什麼? – 2011-02-12 09:01:15

回答

3

你可能會爆炸()的字符串,並遍歷它來檢查長度:

$array = explode(' ', $string); 
foreach($array as $k => $v) { 
    if(strlen($v) <= 3) { 
     $array[$k] = strtoupper($v); //completely upper case 
    } 
    else { 
     $array[$k] = ucfirst($v); //only first character upper case 
    } 
} 
$string = implode(' ', $array); 
+0

這對我很好!感謝您的快速響應。我也會嘗試另一種解決方案。在第4行$ arrary必須更改爲$ array – Claudia 2011-02-12 09:27:24

4

一個快速的方法(用正則表達式):

$new_string = preg_replace_callback('/\b\w{1,3}\b/', function($matches){ 
    return strtoupper($matches[0]); 
}, $string); 

編輯:

沒有看到你想要休息。這應該這樣做:

$new_string = ucwords($new_string); 

你也可以將它們組合起來。 :)

+0

+1,但可以使用`PCRE_EXTENDED`並向Regex添加一些內嵌評論嗎?使它更容易掌握髮生了什麼。謝謝! – Gordon 2011-02-12 09:15:05

相關問題