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