转义 PHP 中的正则表达式


Escaping regular expressions in PHP

我正在尝试转义PHP中的PCRE以在脚本中使用。由于某种原因,我无法让它在转义时运行,只有当 REGEX 作为表单输入给出时,我才设法让它工作。

我正在使用的正则表达式是:

$pattern = '£((http|ftp|https):'/'/)?(['w'-_]+(?:(?:'.['w'-_]+)+))(['w'-'.,@?^=%&:/~'+#]*['w'-'@?^=%&/~'+#])?£';

到目前为止,我已经尝试过:

preg_quote():将正则表达式转换为以下内容并抛出错误:£((http''|ftp''|https):''/''/)''?([''w''-_]+(''?:(''?:''.[''w''-_]+)+))([''w''-''.,@''?''^''=%&:/~''+#]*[''w''-''@''?''^''=%&/~''+#])''?

htmlentities(): 给出错误: 警告: preg_match(): 未知修饰符 'a'

添加斜杠():同上

3 的混合物:同上

有人知道我做错了什么吗?

井号是这里的问题,将其替换为感叹号解决了问题。工作表达式:

$pattern = '!((http|ftp|https):'/'/)?(['w'-_]+(?:(?:'.['w'-_]+)+))(['w'-'.,@?^=%&:/~'+#]*['w'-'@?^=%&/~'+#])?!';

由于某种原因,这在没有转义功能的情况下工作正常。