2013-06-12 74 views
0

PHP的preg_replace我输入的搜索使用preg_replace,但是我希望我的搜索输入接受别人的语言多语言

保持 - 中国人,日本人,德国..等

删除 - 符号性格像@#$%^ *()的

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

任何方式来设置FO多语言?

+0

所以,你想保留什么*做什么,你想要删除什么?使用黑名单而不是白名单会更容易吗? – deceze

+0

为了正则表达式/ PHP中,'æ'是尽可能多的Unicode字符为'^'的。你最好打赌它作出黑名单,并简单地取而代之。 ('的preg_replace( “/ [!\” #¤%&\(\)= /] +”, “”,$搜索);') – h2ooooooo

回答

1

这里的PHP unicode regex reference。加+是没有必要的,因为PHP将通过串循环。 \s将匹配所有空白字符。

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

如果你想只匹配空格字符本身,你会在括号内添加它作为文字:

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

更新补充一点关于根据注释请求空间

+0

如何保持空格?“” – user2178521

+0

我添加了空格字符匹配'\ s'。 –

+0

Thx很多!真的很感谢! – user2178521

3

虽然对于Java,简要概述here

可以使用所谓的Posix的符号:

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

首先是字母数字组,第二个的组合变音标记:口音。 后者不应忘记,因为人们可以写ĉ为一体的Unicode点c-抑扬,也可作为“C”后面是组合用circumflex ^(零宽度,这里由正常抑扬表示)。在某些语言中,基本字母有多个标记。


更正:

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

对于相同的PHP的参考文献:http://www.php。 net/manual/en/regexp.reference.unicode.php –