PHP将括号中的unicode字符串大写

PHP将括号中的unicode字符串大写,php,Php,我想大写每个单词,即使它在任何类型的括号中()[]{}。它还应该大写unicode字符 例如: ti si želva (čestitke) 应该产生 Ti Si Želva (Čestitke) 我使用这个函数很长时间了 function ucwords2($str) { $str = strtolower($str); $str = preg_replace('/(?<![a-z]\')\b[a-z]/e', 'strtoupper(\'$0\')', $str);

我想大写每个单词,即使它在任何类型的括号中()[]{}。它还应该大写unicode字符

例如:

ti si želva (čestitke)
应该产生

Ti Si Želva (Čestitke)
我使用这个函数很长时间了

function ucwords2($str)
{
    $str = strtolower($str);
    $str = preg_replace('/(?<![a-z]\')\b[a-z]/e', 'strtoupper(\'$0\')', $str);
    return $str;
}
函数ucwords2($str)
{
$str=strtolower($str);

$str=preg_replace('/(?以下是对我有效的方法:

$txt='ti si želva (čestitke)';
echo mb_convert_case($txt,MB_CASE_TITLE,'utf-8');
明白了吗?

我认为isLower()函数支持unicode,因此我认为这是检查字符的更好方法。不知道如何在regexp中执行此操作。

尝试以下操作:

function to_up($txt){
    $up=mb_convert_case($txt,MB_CASE_TITLE,'utf-8');
    return strtr($up,
        array(
            "'S"=>"'s",
            "'D"=>"'d",
            "'L"=>"'l"
        )
    );
}

$txt="john, it's all your fault!";
echo to_up($txt);

请注意,您可以在数组中添加任何您想要的内容…

回答得很好。一般来说,切换到Unicode意味着将文件保存为UTF-8,使用mb_*等价的字符串函数,并将
u
标志添加到正则表达式中。这正是我所需要的。但这是一个问题。它还将“或”.So后面的字母大写它的“变成”它的“有任何解决方案与mb_ereg__替换?