【问题标题】:php preg_match_all key value pairphp preg_match_all 键值对
【发布时间】:2014-10-17 04:23:47
【问题描述】:

[[[开始]]]
[[[mapid]]]1994
[[[价格]]]15000
[[[cate1]]]TOP
[[[制造商]]]
[[[原点]]]
[[[修改]]]N
[[[ftend]]]

[[[开始]]]
[[[mapid]]]1994
[[[价格]]]15000
[[[cate1]]]TOP2
[[[制造商]]]
[[[原点]]]
[[[修改]]]N
[[[ftend]]]
...

这里是多数据模板。

是这个时候,我想要键值对结果,使用 preg_match

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

是结果

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

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

[mapid] => [0] => 175741

另外,当我希望价格不存在时,

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

不工作...

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

【问题讨论】:

    标签: regex parsing preg-match


    【解决方案1】:
    (?P<mapid>(?<=\[\[\[price\]\]\]).*)
    

    试试这个。查看演示。

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

    【讨论】:

    • 不需要使用look-behind:\[\[\[price\]\]\](?P&lt;mapid&gt;.*)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多