preg_match url获取参数解析

时间:2010-08-20 11:22:25

标签: php preg-match

我正在尝试提取谷歌地图网址的纬度和经度。 这样的网址可能如下所示:

$url = 'http://maps.google.com/?ie=UTF8&ll=39.811856,11.309322&spn=0,0.485802&t=h&z=12&layer=c&cbll=39.311856,11.519322&panoid=1hltSSOoqv5H1dVKZWFkaA&cbp=13,117.95,,1,16.71';

如您所见,网址中有多个位置集。在我的例子中,cbll变量似乎是正确的。

这就是我提出的:

preg_match("~&cbll=(-?\d+\.?\d*),(-?\d+\.?\d*)~", $url, $matches);

问题:preg_match似乎匹配url中的第一个'& ll =',而不是cbll部分。我得到了网址的“& ll =”部分。

2 个答案:

答案 0 :(得分:1)

parse_str(parse_url($url, PHP_URL_QUERY), $vars);
list($a, $b) = explode(",", $vars['cbll']);

答案 1 :(得分:1)

它对我有用,如果我var_dump $匹配,我看到这个

array(3) {
  [0]=>
  string(25) "&cbll=39.311856,11.519322"
  [1]=>
  string(9) "39.311856"
  [2]=>
  string(9) "11.519322"
}