我努力完成以下任務:使字符串中的所有單詞用3個字符以內完全大寫
$string = "i want to convert this string to the following";
並將其轉換爲這樣的事情:
echo $string;
// I Want TO Convert This String TO THE Following
這樣: 大寫字符串中的所有單詞的第一個字母 ,如果一個單詞不超過3個字符,則在字符串中使整個單詞大寫。 PHP無法做到這一點?
我努力完成以下任務:使字符串中的所有單詞用3個字符以內完全大寫
$string = "i want to convert this string to the following";
並將其轉換爲這樣的事情:
echo $string;
// I Want TO Convert This String TO THE Following
這樣: 大寫字符串中的所有單詞的第一個字母 ,如果一個單詞不超過3個字符,則在字符串中使整個單詞大寫。 PHP無法做到這一點?
你可能會爆炸()的字符串,並遍歷它來檢查長度:
$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);
這對我很好!感謝您的快速響應。我也會嘗試另一種解決方案。在第4行$ arrary必須更改爲$ array – Claudia 2011-02-12 09:27:24
一個快速的方法(用正則表達式):
$new_string = preg_replace_callback('/\b\w{1,3}\b/', function($matches){
return strtoupper($matches[0]);
}, $string);
編輯:
沒有看到你想要休息。這應該這樣做:
$new_string = ucwords($new_string);
你也可以將它們組合起來。 :)
+1,但可以使用`PCRE_EXTENDED`並向Regex添加一些內嵌評論嗎?使它更容易掌握髮生了什麼。謝謝! – Gordon 2011-02-12 09:15:05
那麼你已經嘗試過什麼? – 2011-02-12 09:01:15