preg_match_all不在输出数组中返回任何内容

时间:2014-01-08 21:13:37

标签: php regex preg-match-all

我正在尝试使用正则表达式解析字符串中的php变量。例如,

$str = '$str1var ="str1"; $str2var = "str2"';

会给我一个数组[' str1var',' str2var']

我在php中的正则表达式是:" / \ $(。*?)= / s"

$pattern = "/\$(.*?)=/s";
preg_match_all($pattern, $str, $output_array);

但是preg_match_all返回0(没有匹配) 我的正则表达式出了什么问题?我在http://www.phpliveregex.com/这样的网站上测试过它工作正常,但我的服务器返回0;

我的服务器PHP版本是5.1.6

3 个答案:

答案 0 :(得分:3)

PHP似乎对模式周围的双引号有问题,可能是因为$符号而在寻找变量。

您的代码在any php version中不起作用,但是在单引号中它适用于所有php版本,请参阅example

$pattern = '/\$(.*?)=/s';

答案 1 :(得分:1)

变量在PHP中用双引号解析。

答案 2 :(得分:0)

 $pattern = '/\$(?P<variable>.*?)(?:\s|)=(?:\s|)"(?P<value>.*?)"/';

如果需要,返回带有值的关联数组。