我想用空格替换所有字符,除了数字,字母,空格和其他字符#=<>();*,.+\/-
e.g。 preg_replace("/[^ #=<>();*,.+\/-\w]+/", " ", $string);
我的问题是,当$string
中有两个或更多连续字符要替换时,该函数只用一个空格替换这个字符,而我需要用两个或多个字符替换两个或多个字符或更多空间。
有办法吗?
答案 0 :(得分:3)
您应该一次只匹配一个字符。你还必须逃避一些角色。
更改
preg_replace("/[^ #=<>();*,.+/-\w]+/", " ", $string);
到
preg_replace("/[^ #=<>();*,\\.+\\/\\-\\w]/", " ", $string);
答案 1 :(得分:1)
我想用空格替换所有字符,除了数字,字母,空格和其他字符
#=<>();*,.+\/-
\w
代表字母,数字和_
符号。因此,请避免在字符类中使用\w
。
正如另一个答案所说,你需要删除+
个字符后面的字符,它用一个空格替换一个或多个字符。
你的正则表达式应该是,
[^- #=<>();*,.+\\\/0-9A-Za-z]
_
符号,因为它不包含在NOT字符类中。在替换部分,我只给了一个空格。它用三个空格替换三个_
符号。