preg_match并在双引号内转义

时间:2017-03-31 00:39:59

标签: php escaping preg-match newline double-quotes

在这里完成PHP新手试图掌握文字和逃脱,所以事先道歉这是如此基本。我在preg_match上已经阅读了很多问题,但似乎都没有解决这个问题。

我有一个旧表单,其中包含使用双引号的已弃用eregi()函数的实例:

eregi("\n", $s)
eregi("%0a", $s)

这两行是检查注射字符的较长行的一部分。

如果我使用分隔符和尾随preg_match将函数更新为i,请执行以下操作:

preg_match("/\n/i", $s)
preg_match("/%0a/i", $s)

我现在是否还需要使用自己的反斜杠来逃避\和/或%

由于

1 个答案:

答案 0 :(得分:0)

我建议使用管道preg_match()将所有无效字符合并为一个调用,而不是运行多个|调用。

在您的情况下,无需转义,您可以使用:preg_match(/\n|%0a/,$s)

如果您想添加更多列入黑名单的字符,可以在https://regex101.com/

上根据您自己的示例输入测试您的模式

最后,如果您不一定要阻止传入的数据,但希望删除列入黑名单的字符,则可以使用preg_replace()