非常简单的RegEx表达式不起作用

时间:2014-01-12 17:35:14

标签: php regex

我有一个很长的字符串,我想使用PHP preg_replace清理白名单。这个数据已经有些编码,全部都是ANSI,这里不需要担心Unicode。

我想要做的是将特定白名单之外的任何字符转换为破折号。

preg_replace("[^0-9A-Za-z/\-_.?=:]", "-", $input);

我的理解是[]是一个字符集,然后我写下我想要允许的字符,这里不需要转义,开头用^来否定它。

但它不起作用:字符串完全按照preg_replace的标准出来。如果我输入%%就出来了,我就不会我希望它,我希望它转换成破折号。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

您必须写下regex delimiters

preg_replace("#[^0-9A-Za-z/\-_.?=:]#", "-", $input);

或更好:

preg_replace("#[^\w/.?=:-]#", "-", $input);