preg_match 并在双引号内转义

preg_match and escaping when inside double quotes

完全 PHP 新手在这里试图掌握文字和转义,所以提前道歉,这是如此基础。我已经阅读了很多关于 preg_match 的问题,但 none 似乎解决了这个问题。

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

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

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

如果我将函数更新为带有分隔符和尾随 ipreg_match,如下所示:

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

我现在还需要用我自己的反斜杠转义 \ and/or % 吗?

谢谢

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

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

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

处针对您自己的示例输入测试您的模式

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