保留第一个字母大写并以国际字母支持小写

时间:2014-06-30 14:53:01

标签: php

我正在使用此代码将首字母大写并保持小写,但它不支持国际拉丁字母。我应该添加什么来支持它?

str_replace('\' ', '\'', ucwords(str_replace('\'', '\' ', strtolower($name))))
编辑:ucfirst没有这样做因为我需要每个单词的第一个字母大写

示例:HELLO BABY如何

我需要它:你好宝贝你好吗

5 个答案:

答案 0 :(得分:1)

这也适用于国际角色:

mb_convert_case($str, MB_CASE_TITLE, "UTF-8");

答案 1 :(得分:1)

您可以将ucwordsstrtolower

一起使用
$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的代码。