PHP preg_match_all失败,带有2个参数

时间:2016-02-09 10:05:30

标签: php regex

我的变量$ randomWiki包含以下字符串:

[...]"wgNamespaceNumber":0,"wgPageName":"Busfahrer","wgTitle":"Busfahrer","wgCurRevisionId"[...]

并希望从中获取“wgTitle”。 我构建了以下正则表达式:

preg_match_all("/\"wgTitle\":\"(.*?)\"/", $randomWiki);

var_dump给了我bool(false)。 我已经使用在线工具检查了正则表达式并且它有效。

任何建议?

3 个答案:

答案 0 :(得分:2)

您应该使用以下代码:

$str = '"wgNamespaceNumber":0,"wgPageName":"Busfahrer","wgTitle":"Busfahrer","wgCurRevisionId"';

preg_match_all("#\"wgTitle\":\"([^\"]*)\"#", $str, $res);
var_dump($res);

preg_match_all 接受3个参数。

答案 1 :(得分:0)

试试这个,

\"wgTitle\":\"(\w)*\"

答案 2 :(得分:0)

解决方案肯定断言 ?=

$str = '"wgNamespaceNumber":0,"wgPageName":"Busfahrer","wgTitle":"Busfahrer","wgCurRevisionId"';

// it matches the word followed by separator ," - which is the boundary of the next key
preg_match_all("/\"wgTitle\":\"(\w+)\"(?=,\")/iu", $str, $matches);

var_dump($matches[1]); 

// the output:
array(1) {
  [0]=>
  string(9) "Busfahrer"
} 

http://php.net/manual/en/regexp.reference.assertions.php