Php preg_替换为:alnum:和UTF-8
我发现在使用UTF-8字符串时,使用Php preg_替换为:alnum:和UTF-8,php,utf-8,preg-replace,Php,Utf 8,Preg Replace,我发现在使用UTF-8字符串时,使用u修饰符有时会有所帮助,但在我的Linux服务器上,它将umlaut替换为-,而将其保留在Windows服务器上 mb_internal_encoding('UTF-8'); function clean($string) { return preg_replace('/[^[:alnum:]]/ui', '-', $string); } echo clean("Test: föG"); Linux: 测试——f-G Windows(应为): 测试
u
修饰符有时会有所帮助,但在我的Linux服务器上,它将umlaut替换为-
,而将其保留在Windows服务器上
mb_internal_encoding('UTF-8');
function clean($string) {
return preg_replace('/[^[:alnum:]]/ui', '-', $string);
}
echo clean("Test: föG");
Linux:
测试——f-G
Windows(应为):
测试——föG
来自:
在UTF-8模式下,值大于128的字符与任何POSIX字符类都不匹配
这可能是因为效率原因:有许多Unicode字符。可以使用Unicode字符属性而不是POSIX字符类编写正则表达式。不过,这会稍微慢一些
<?php
mb_internal_encoding('UTF-8');
function clean($string) {
return preg_replace('/[^\\p{L}\\p{N}]/ui', '-', $string);
}
echo clean("Test: föG");
如果将UTF-8更改为其他版本,会发生什么情况?例如charset=windows-1252
。您的意思是mb_内部编码('windows-1252')
?不会改变任何事情…像那样的事情。你试过把它全部删除吗?同样,删除那一行也不会改变任何东西。如果你试着以某种方式使用utf8\u encode
,那会怎么样?一定要处理组合变音符号:((?工作:)