我写了下面这个函数。它将小写字母转换为大写字母和正确的大小写。我希望它忽略外国字符。例如。 ñ
预期结果:Sabiña/ Cerca
实际结果:SabiÑA/ Cerca
注意:如果我单独使用mb_convert_case,则在/之后不会更改任何字符。
$string= 'SABIÑA CERCA';
echo preg_replace_callback('/\w+/i',
create_function('$m','
var_dump($m);
if(strlen($m[0]) > 3)
{
return mb_convert_case($m[0], MB_CASE_TITLE, "UTF-8");
}
else
{
return ucfirst($m[0]);
}')
, $string);
答案 0 :(得分:2)
您只需使用/u
修饰符。
'/\w+/u'
请参阅IDEONE demo
请注意,/i
不区分大小写的修饰符是多余的,因为 \w
会匹配小写和大写字母。
此修饰符打开与Perl不兼容的PCRE的其他功能。模式和主题字符串被视为UTF-8。此修饰符可从Unix上的PHP 4.1.0或更高版本以及win32上的PHP 4.2.3获得。