loadHTML($html); libxml_clear_errors(); // Recherche du div avec l'id "sommaire-centre" $sommaireCentreDiv = $dom->getElementById('sommaire-centre'); // Recherche des balises
  • dans le div $liElements = $sommaireCentreDiv->getElementsByTagName('li'); // Tableau pour stocker les villes et leurs coordonnées $cities = array(); // Parcourir les balises
  • et extraire le texte cliquable des liens foreach ($liElements as $liElement) { // Vérifier s'il y a un lien dans le
  • $linkElement = $liElement->getElementsByTagName('a')->item(0); if ($linkElement) { $ville = $linkElement->nodeValue; $ville = preg_replace('/^(B\s|\d{2}\s)/', '', $ville); $href = $linkElement->getAttribute('href'); //echo $ville . "
    "; //echo "Lien : " . $href . "
    "; // Requête à l'API Nominatim $options = array( 'http' => array( 'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3", ), ); $context = stream_context_create($options); $url = 'https://nominatim.openstreetmap.org/search?city=' . urlencode($ville) . '&format=json'; $response = file_get_contents($url, false, $context); $data = json_decode($response, true); // Vérifier si la requête a réussi if (!empty($data)) { // Récupérer les coordonnées géographiques de la première correspondance $latitude = $data[0]['lat']; $longitude = $data[0]['lon']; //echo "Latitude : " . $latitude . "
    "; //echo "Longitude : " . $longitude . "
    "; // Ajouter la ville et ses coordonnées au tableau $cities[] = array( 'name' => $ville, 'lat' => $latitude, 'lon' => $longitude, 'href' => $href, ); } else { echo "Erreur : Impossible de géocoder la ville : " . $ville; } } } ?> Carte OpenStreetMap