我想大寫php字符串中的每個單詞,但函數沒有檢測到一個單詞,緊接着是一個括號。我怎樣才能讓一個括號後面的一個單詞大寫?Php大括號後面的單詞
實施例:阿姆哈拉語(埃塞俄比亞)....阿姆哈拉(黑人)
(目前使用ucwords(),PHP顯示阿姆哈拉語(埃塞俄比亞))
我想大寫php字符串中的每個單詞,但函數沒有檢測到一個單詞,緊接着是一個括號。我怎樣才能讓一個括號後面的一個單詞大寫?Php大括號後面的單詞
實施例:阿姆哈拉語(埃塞俄比亞)....阿姆哈拉(黑人)
(目前使用ucwords(),PHP顯示阿姆哈拉語(埃塞俄比亞))
這是一個known bug這需要有被空白在開括號和第一個字母之間。這裏有一個解決方法:
$var = "amharic (ethiopian)";
echo str_replace('(', '(', ucwords(str_replace('(', '(', $var)));
結果
Amharic (Ethiopian)
你應該能夠了preg_replace(http://php.net/manual/en/function.preg-replace.php)和正則表達式像/[A-Z][a-zA-Z]*/
或類似的解決這個問題。
我認爲問題在於php會在空格後面加上第一個字符,因爲括號只是空格之後的一個字符,所以它被認爲是單詞中的第一個字符必須是大寫字母和其他字符folow中它被認爲是這個世界的人物
因此,要解決這個我認爲你必須支架和人物之間的空間,以便PHP可以檢測支架爲單個字符,而不是開始一個字的字符:)
試試這個,我試了一下,
$text= "amharic (ethiopian)";
echo mb_convert_case($text, MB_CASE_TITLE, "UTF-8");
輸出:阿姆哈拉語(埃塞俄比亞)
注:它看起來像PHP的mbstring的功能被啓用。
對於任何需要圍繞包括破折號,括號和括號在內的其他字符標題大小寫的人。你可以用preg_replace_callback來使用正則表達式來捕獲一個用破折號分隔的單詞,或者以一個不在字母表中的字符開始。
/** Capitalize first letter if string is only one word **/
$STR = ucwords(strtolower($STR));
/** Correct Title Case for words with non-alphabet charcters ex. Screw-Washer **/
$STR = preg_replace_callback('/([A-Z]*)([^A-Z]+)([A-Z]+)/i',
function ($matches) {
$return = ucwords(strtolower($matches[1])).$matches[2].ucwords(strtolower($matches[3]));
return $return;
}, $STR);
下面功能使用隱蔽字與支架成支架後大寫
function ucWordWithBracket($edit){
$new_word = str_replace("(","(",$edit);
$temp = ucwords($new_word);
$new_word = str_replace("(","(",$temp);
return $new_word;
}
ucWordWithBracket(阿姆哈拉語(埃塞俄比亞))funcation的
輸出爲 「阿姆哈拉(黑人)」;警告:在Drupal使用它
strtr函數的效率()預計參數1是串,陣列中的給定FORMAT_STRING() – Francesco
@Francesco這個問題被標記[標籤:PHP] – Kermit