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)就足够了,但如果您需要多个...,只需计算多少个数组元素(在上面的代码中爆炸后),然后使用循环。
映入眼帘,
太棒了,完美的作品! – 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