我输入搜索使用preg_replace
,但我希望我的搜索输入接受其他语言
保持 - 中文,日文,德文等。
删除 - 符号字符,如@#$%^ *()那些
这个只保留英语preg_replace("/[^a-zA-Z0-9]+/", "", $search);
设置多语言的任何方式?
答案 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);
更新在每条评论请求中添加了有关空格的位