如何将正则表达式搜索中的外来字符转换为正确的大小写?
How to convert foreign characters in regex search to proper case?
我写了下面的函数。它将小写字母转换为大写字母和正确的大小写。我希望它忽略外来字符。例如。 ñ
预期结果:Sabiña/Cerca
实际结果:萨比纳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);
您只需要使用 /u
修饰符。
'/\w+/u'
请注意 /i
不区分大小写的修饰符是多余的,因为 \w
匹配大小写字母 .
This modifier turns on additional functionality of PCRE that is incompatible with Perl. Pattern and subject strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32.
我写了下面的函数。它将小写字母转换为大写字母和正确的大小写。我希望它忽略外来字符。例如。 ñ
预期结果:Sabiña/Cerca
实际结果:萨比纳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);
您只需要使用 /u
修饰符。
'/\w+/u'
请注意 /i
不区分大小写的修饰符是多余的,因为 \w
匹配大小写字母 .
This modifier turns on additional functionality of PCRE that is incompatible with Perl. Pattern and subject strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32.