所以我有这段代码:
$body = '$var = \'VALUE\';';
$matches = array();
preg_match("/\$var\s*=\s*('|\")(.*)('|\");/", $body, $matches);
print_r($matches);
但是,它显示$ match是空的......
为什么会这样?当我在http://regex101.com/上尝试正则表达式时,它起作用了。是因为我在正则表达式中使用的\? (我试图用它来匹配空白字符)
答案 0 :(得分:2)
"\$"
是一个包含文字$
的字符串。在正则表达式中,文字$
表示"字符串结尾" (或"行尾#34;使用适当的修饰符)。
您需要使用\\\$
,或在字符串周围使用单引号而不是双引号。
另一个选择是NOWDOC:
preg_match(<<<'REGEX'
/\$var\s*=\s*(['"])(.*)\1;/
REGEX
, $body, $matches);
我保证语法突出显示效果更好!