php preg_match_all键值对

时间:2014-10-17 04:23:47

标签: regex parsing preg-match

  

[[[开始]]]
  [[[的azazaz]]] 1994
  [[[价格]]] 15000个
  [[[cate1]]] TOP
  [[[制造者]]]
  [[[origi]]]
  [[[modig]]] n的
  [[[ftend]]]
  
  [[[开始]]]
  [[[的azazaz]]] 1994
  [[[价格]]] 15000个
  [[[cate1]]] TOP2
  [[[制造者]]]
  [[[origi]]]
  [[[modig]]] n的
  [[[ftend]]]
  ...

这里有多个数据模板。

这次,我想要键值对结果,使用preg_match

$pattern .= "(?P<mapid>[[[pname]]](.*?))";
$pattern .= "[[[price]]](.*?)";
...

是结果

[mapid] => [0] => [[[mapid]]]175741

但是,我想要下面的结果,

[mapid] => [0] => 175741

另外,当我想要价格不存在时,

$pattern .= "(?P<mapid>[[[pname]]](.*?))";
$pattern .= "?([[[price]]](.*?))";

不工作......

我应该怎么做才能得到我想要的结果?

1 个答案:

答案 0 :(得分:0)

(?P<mapid>(?<=\[\[\[price\]\]\]).*)

试试这个。看看演示。

http://regex101.com/r/dZ1vT6/47