0

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

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

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

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

有什么方法可以设置多语言?

4

2 回答 2

3

虽然对于 java,这里有一个简明的概述。

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

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

第一个是字母数字组,第二个是组合变音符号:重音符号。不应忘记后者,因为可以写成ĉ一个 Unicode 点 c-circumflex,也可以写成 'c' 后跟一个组合抑扬符^(零宽度,这里用正常的抑扬符表示)。在某些语言中,一个基本字母有多个标记。


更正:

[^\p{L}\p{N}\p{M}]
于 2013-06-12T07:46:40.690 回答
1

这是PHP unicode 正则表达式参考。加号+不是必需的,因为 PHP 将遍历字符串。将\s匹配所有空白字符。

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

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

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

更新为每个评论请求添加了一些关于空格的信息

于 2013-06-12T07:49:59.847 回答