$q = durham-region;
$q = ucfirst($q);
$q = Durham-region;
如何在破折號後(達勒姆地區)使用大寫字母?我是否必須將兩者分開並充分利用?PHP破折號後大寫
$q = durham-region;
$q = ucfirst($q);
$q = Durham-region;
如何在破折號後(達勒姆地區)使用大寫字母?我是否必須將兩者分開並充分利用?PHP破折號後大寫
更新的解決方案
在PHP 5.5中,e
修飾符preg_replace
已被棄用。最好的辦法是現在使用的是不使用此一建議,如:
$q = preg_replace_callback('/(\w+)/g', create_function('$m','return ucfirst($m[1]);'), $q)
或
$q = implode('-', array_map('ucfirst', explode('-', $q)));
原來的答案
你可以使用e
使用preg_replace
這種方式修改:
$test = "durham-region";
$test = preg_replace("/(\w+)/e","ucfirst('\\1')", $test);
echo $test;
// Durham-Region
是的。 ucfirst()
只是大寫字母的第一個字母。如果你想多個字母大寫,你必須創建多個字符串。
$strings = explode("-", $string);
$newString = "";
foreach($strings as $string){
$newString += ucfirst($string);
}
function ucfirst_all($delimiter, $string){
$strings = explode("-", $string);
$newString = "";
foreach($strings as $string){
$newString += ucfirst($string);
}
return $newString;
}
你不是說'=' ? – 2011-04-05 02:30:27
你可以用這樣的正則表達式回調方法做到這一點:
$q = preg_replace_callback('/\-([a-z]+)/g', create_function(
'$m', 'return "-" . ucfirst($m[1]);'
),$q)
一個班輪不使用e
PCRE修飾符進化得只剩:
$str = implode('-', array_map('ucfirst', explode('-', $str)));
這一行代碼適用於我(也適用於包含Umlaute的單詞)。 – 2014-11-18 12:02:43
重要的是要注意的是,這裏提供的解決方案將不會與UTF-8字符串的工作是很重要的!
$str = "Τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει-υπέρ νωθρού κυνός";
$str = explode('-', mb_convert_case($str, MB_CASE_TITLE));
$str = implode('-', array_map('mb_convert_case', $str, array(MB_CASE_TITLE, "UTF-8")));
echo $str;
// str= Τάχιστη Αλώπηξ Βαφήσ Ψημένη Γη, Δρασκελίζει-Υπέρ Νωθρού Κυνόσ
另一oneliner:
str_replace(' ','',ucwords(str_replace('-',' ',$action)))
只是謹慎,這可能會影響包含空格和短劃線的字符串,但對於單個單詞而言,這也很好。 – 2015-10-21 14:46:36
看
function UpperCaseAfterDash($wyraz)
{
$rozbij = explode('-',$wyraz);
echo $rozbij[0].'-'.
ucfirst($rozbij[1]);
}
UpperCaseAfterDash("input-text");
以上函數返回輸入文本
如果你需要一個破折號例如城市後僅大寫字母名字(Jastrzębie-Zdrój)就足夠了,但如果您需要多個...,只需計算多少個數組元素(在上面的代碼中爆炸後),然後使用循環。
映入眼簾,
感謝的ucwords
的delimiter
參數,因爲PHP 5.4.32和5.5.16,它是如此簡單:
$string = ucwords($string, "-");
太棒了,完美的作品! – mrlayance 2011-04-05 01:36:29
我從來不知道e修飾符,真好!你可以像這樣簡化正則表達式:'$ test = preg_replace(「/(\ w *)/ e」,「ucfirst('\\ 1')」,$ test);' – 2011-04-05 01:44:14
良好的調用更清晰的代碼 - 是啊,電子修改器沒有很多的用處,但它仍然在那裏:) – Kelly 2011-04-05 01:46:47