2010-08-20 6 views
0

J'essaie d'extraire la latitude et la longitude d'une URL google maps. Une telle URL pourrait ressembler à ceci:preg_match url obtenir l'analyse des paramètres

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

Comme vous pouvez le voir, il y a plusieurs ensembles de localisation dans l'URL. La variable cbll semble être la bonne dans mon cas.

C'est ce que je suis venu avec:

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

Le problème: Le preg_match semble correspondre à la première « & ll = » dans l'URL, et non la partie cbll. Je reçois la "& ll =" partie de l'URL en tant que résultat.

Répondre

1

Il fonctionne pour moi, si je var_dump $ matches, je vois ce

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

Vous avez raison. Aurait dû vérifier le var_dump. Maintenant, j'ai besoin de savoir pourquoi il y a un marqueur montrant dans ma carte à l'emplacement de la variable ll, mais pas à la variable cbll ... – reggie

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