PHP-替换所有受支持语言的所有非字母数字字符
嗨,我正在尝试替换字符串中的所有非字母数字字符,如下所示:PHP-替换所有受支持语言的所有非字母数字字符,php,regex,string,replace,multibyte,Php,Regex,String,Replace,Multibyte,嗨,我正在尝试替换字符串中的所有非字母数字字符,如下所示: mb_ereg_replace('/[^a-z0-9\s]+/i','-',$string); 第一个问题是它不替换字符串中的字符,如“” 其次,我想在这个方法中添加对所有用户语言的multybite支持 我该怎么做 感谢您的帮助。它应该将替换为-,您可能首先混淆了数据 对于多字节支持,添加u修饰符并查看,即\p{Letter}: $replaced = preg_replace('~[^0-9\p{Letter}]+~iu', '-
mb_ereg_replace('/[^a-z0-9\s]+/i','-',$string);
第一个问题是它不替换字符串中的字符,如“
”
其次,我想在这个方法中添加对所有用户语言的multybite支持
我该怎么做
感谢您的帮助。它应该将
替换为-
,您可能首先混淆了数据
对于多字节支持,添加u
修饰符并查看,即\p{Letter}
:
$replaced = preg_replace('~[^0-9\p{Letter}]+~iu', '-', $string);
请尝试以下操作:
preg_replace('/[^\p{L}0-9\s]+/u', '-', $string);
在正则表达式上使用
u
标志时,\p{L}
(和\p{Letter}
)匹配任何Unicode字母类别中的任何字符 此表达式确实替换了点。对于多字节使用u
修饰符(UTF-8)。最短的方法是:
$result = preg_replace('~\P{Xan}++~u', '-', $string);
\p{Xan}
包含所有语言中的数字和字母,因此\p{Xan}
包含所有非字母或数字的内容。只需将句点添加到字符列表中即可^a-z0-9\s---至于“添加多字节支持”,如果你的意思是替换重音符号之类的,我只知道用é=>e这样的东西制作一个巨大的数组,并将其用于strtr。@Ariane可以吗?我是说我已经有月经了!?“否”对于重音不重要;)天哪,伙计,我用了mb_ereg_replace()对不起,我更新了问题@AlixAxel@badbetonbreakbutbedbackbone:与Perl兼容的正则表达式(preg
)比扩展正则表达式(ereg
)更强大。天哪,我用了mb_ereg_replace()对不起,我更新了问题@F.js我应该改用preg_replace()吗p我对mb_ereg_replace()
不太了解,但是preg_replace()
应该可以工作,所以切换肯定是一个选项。天哪,伙计,我用了mb_ereg_replace(),对不起,我更新了问题@ziarno谢了,但是mb_ereg_replace()不是更好?你能告诉我是否需要切换到preg_replace()吗?为什么P@badbetonbreakbutbedbackbone:否。结尾的u修饰符使模式可以使用preg_*函数处理unicode。嗯,mb_ereg函数将消失。preg_*函数更快,并且支持unicode。