带有\ s的PHP正则表达式无效

时间:2014-03-31 14:51:55

标签: php regex

所以我有这段代码:

$body = '$var = \'VALUE\';';
$matches = array();
preg_match("/\$var\s*=\s*('|\")(.*)('|\");/", $body, $matches);
print_r($matches);

但是,它显示$ match是空的......

为什么会这样?当我在http://regex101.com/上尝试正则表达式时,它起作用了。是因为我在正则表达式中使用的\? (我试图用它来匹配空白字符)

1 个答案:

答案 0 :(得分:2)

"\$"是一个包含文字$的字符串。在正则表达式中,文字$表示"字符串结尾" (或"行尾#34;使用适当的修饰符)。

您需要使用\\\$,或在字符串周围使用单引号而不是双引号。

另一个选择是NOWDOC:

preg_match(<<<'REGEX'
/\$var\s*=\s*(['"])(.*)\1;/
REGEX
, $body, $matches);

我保证语法突出显示效果更好!

highlight