用于多语言的PHP preg_replace

时间:2013-06-12 07:35:45

标签: php

我输入搜索使用preg_replace,但我希望我的搜索输入接受其他语言

保持 - 中文,日文,德文等。

删除 - 符号字符,如@#$%^ *()那些

这个只保留英语preg_replace("/[^a-zA-Z0-9]+/", "", $search);

设置多语言的任何方式?

2 个答案:

答案 0 :(得分:3)

虽然对于java,简明概述here

您可以使用所谓的Posix表示法:

[^\p{Alnum}\p{M}]

第一个是字母数字组,第二个是组合变音符号:重音符号。 后者不应该被遗忘,因为可以将ĉ写为一个Unicode点c-circumflex,也可以将'{c'写成一个组合的旋律^(零宽度,此处由正常的旋律表示) 。在某些语言中,基本字母有多个标记。


校正:

[^\p{L}\p{N}\p{M}]

答案 1 :(得分:1)

这是PHP unicode regex reference。加号+不是必需的,因为PHP将遍历字符串。 \s将匹配所有空格字符。

preg_replace("![^\p{L}\p{N}\s]!", "", $search);

如果您只想匹配空格字符本身,您可以将其作为文字添加到括号中:

preg_replace("![^\p{L}\p{N} ]!", "", $search);

更新在每条评论请求中添加了有关空格的位