php正则表达式找到javascript变量

时间:2015-01-12 22:02:00

标签: php regex

我正在搜索的文字包含vars (= OR :) { (the stuff I want }

在=和{之间只能是空格,可能包含一个新行。

我将把它变成PHP中的键/值数组。

以下是我正在尝试的不会导致任何匹配的内容:

$str = "vars = {'first' : 'joe', 'last' : 'smith' };";

preg_match("/^vars\s=\s\{(.*)\}/",$str, $matches);

echo $matches[0];

另一个应匹配的字符串:

$str = "vars : {'first' : 'joe', 'last' : 'smith' };";

2 个答案:

答案 0 :(得分:1)

也许你可以抓住{}中的所有内容,然后让JSON解析器为你完成剩下的工作。

$str = 'vars = {"first" : "joe", "last" : "smith" };';
preg_match("/\{.*\}/",$str, $matches);
var_dump(json_decode($matches[0]));

object(stdClass)#1 (2) {
  ["first"]=>
  string(3) "joe"
  ["last"]=>
  string(5) "smith"
}

此方法仅适用于有效的JSON ofc。

答案 1 :(得分:0)

要匹配它,请使用:

preg_match_all('/^vars\s[=:]\s{(.*)};$/m', $str, $matches, PREG_PATTERN_ORDER);
$matches = $matches[0];