preg_match url получает парсинг параметров - PullRequest
0 голосов
/ 20 августа 2010

Я пытаюсь извлечь широту и долготу URL карты Google. Такой URL может выглядеть так:

$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';

Как видите, в URL есть несколько наборов локаций. Кажется, в моем случае правильная переменная cbll.

Вот что я придумал:

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

Проблема: preg_match, похоже, соответствует первому '& ll =' в URL, а не части cbll В результате я получаю часть URL-адреса "& ll =".

Ответы [ 2 ]

1 голос
/ 20 августа 2010

Это работает для меня, если я соответствую var_dump $, я вижу это

array(3) {
  [0]=>
  string(25) "&cbll=39.311856,11.519322"
  [1]=>
  string(9) "39.311856"
  [2]=>
  string(9) "11.519322"
}
1 голос
/ 20 августа 2010
parse_str(parse_url($url, PHP_URL_QUERY), $vars);
list($a, $b) = explode(",", $vars['cbll']);
...