preg_match_all返回2个结果

时间:2013-01-15 00:23:44

标签: php regex

$string = "c4414b8e90510db12 GET /emailtrack/blank.gif?source=mailchimp&guid=12345&campaign=myCampaign HTTP/1.1"
preg_match_all('/("GET.*?"+)/is',$string,$match);

Result:

Array (
    [0] => Array (
        [0] => "GET /emailtrack/blank.gif?source=mailchimp&guid=12345&campaign=myCampaign HTTP/1.1"
    )

    [1] => Array (
        [0] => "GET /emailtrack/blank.gif?source=mailchimp&guid=12345&campaign=myCampaign HTTP/1.1"
    )
)

通过preg_match_all解析字符串只是为了获取GET字符串,但它返回GET字符串的2个结果,我只需要数组中的一个结果

感谢早先的答案对我有用。

$string = "source=xxxx&campaign=asdas&guid=121"

无论如何你可以帮我告诉我一个正则表达式从上面的字符串中提取source = xxxxx

我试过这个

preg_match_all('/source.*?\s/', $string, $match);

但是它给了我整个字符串,我想分开字符串来源,广告系列& GUID

1 个答案:

答案 0 :(得分:2)

结果的第一个条目始终是完全匹配。您还可以在整个模式周围添加额外的括号,这将成为第一个“子模式”。

解决方案:删除括号。