我正在使用此代码将首字母大写并保持小写,但它不支持国际拉丁字母。我应该添加什么来支持它?
str_replace('\' ', '\'', ucwords(str_replace('\'', '\' ', strtolower($name))))
编辑:ucfirst没有这样做因为我需要每个单词的第一个字母大写
示例:HELLO BABY如何
我需要它:你好宝贝你好吗
答案 0 :(得分:1)
这也适用于国际角色:
mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
答案 1 :(得分:1)
您可以将ucwords与strtolower
一起使用$string ="HELLO BABY HOW ARE YOU";
echo ucwords(strtolower($string));
输出:
Hello Baby How Are You.
答案 2 :(得分:1)
在传递给strtolower
之前,您可以先使用ucwords
将字符串设为小写。
ucwords
可以使用国际字符,只要设置了正确的区域设置。
请参阅setlocale
上的文档:
http://php.net/manual/en/function.setlocale.php
您需要设置用于字符分类和转换的LC_CTYPE
。
德语字符示例:
setlocale(LC_CTYPE, 'de');
$a = ucwords(strtolower($b));
答案 3 :(得分:0)
以下是代码:
function capitalizeFirstLetter($sentence){
$result = "";
$words = explode(" ", $sentence);
for($i=0; $i<sizeof($words); $i++){
$words[$i] = strtolower($words[$i]);
$words[$i] = ucfirst($words[$i]);
$result .= $words[$i];
if($i != (sizeof($words) - 1)){
$result .= " ";
}
}
return $result;
}
$test = "HELLO BABY HOW ARE YOU";
echo capitalizeFirstLetter($test);
我找不到避免循环的方法。
答案 4 :(得分:-1)
您是否考虑过使用ucfirst
?这是documentation。
有人在评论部分发布了sentence_case
版本ucfirst
的代码。