我有一个很长的字符串,我想使用PHP preg_replace
清理白名单。这个数据已经有些编码,全部都是ANSI,这里不需要担心Unicode。
我想要做的是将特定白名单之外的任何字符转换为破折号。
preg_replace("[^0-9A-Za-z/\-_.?=:]", "-", $input);
我的理解是[]
是一个字符集,然后我写下我想要允许的字符,这里不需要转义,开头用^
来否定它。
但它不起作用:字符串完全按照preg_replace
的标准出来。如果我输入%
,%
就出来了,我就不会我希望它,我希望它转换成破折号。
感谢您的时间。
答案 0 :(得分:1)
您必须写下regex delimiters:
preg_replace("#[^0-9A-Za-z/\-_.?=:]#", "-", $input);
或更好:
preg_replace("#[^\w/.?=:-]#", "-", $input);