我正在尝试使用正则表达式解析字符串中的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
答案 0 :(得分:3)
PHP似乎对模式周围的双引号有问题,可能是因为$
符号而在寻找变量。
您的代码在any php version中不起作用,但是在单引号中它适用于所有php版本,请参阅example:
$pattern = '/\$(.*?)=/s';
答案 1 :(得分:1)
变量在PHP中用双引号解析。
答案 2 :(得分:0)
$pattern = '/\$(?P<variable>.*?)(?:\s|)=(?:\s|)"(?P<value>.*?)"/';
如果需要,返回带有值的关联数组。