preg_match url получить парсинг параметров

Я пытаюсь извлечь широту и долготу 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. Я получаю «& ll =» часть URL-адреса.

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

 array(3) { [0]=> string(25) "&cbll=39.311856,11.519322" [1]=> string(9) "39.311856" [2]=> string(9) "11.519322" } 
 parse_str(parse_url($url, PHP_URL_QUERY), $vars); list($a, $b) = explode(",", $vars['cbll']);