66 lines
1.8 KiB
PHP
66 lines
1.8 KiB
PHP
<?php
|
|
|
|
// URL de la page à extraire
|
|
$url = "https://www.lachainemeteo.com/meteo-france/ville-215361/previsions-meteo-la-gacilly-demain";
|
|
|
|
// Fonction pour récupérer le contenu HTML d'une URL
|
|
function getHTMLContent($url) {
|
|
$ch = curl_init();
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
$htmlContent = curl_exec($ch);
|
|
curl_close($ch);
|
|
return $htmlContent;
|
|
}
|
|
|
|
// Fonction pour extraire les données de la classe HTML "timetable-container"
|
|
function extractDataFromHTML($htmlContent) {
|
|
$doc = new DOMDocument();
|
|
libxml_use_internal_errors(true); // Désactiver les erreurs libxml
|
|
|
|
// Charger le contenu HTML
|
|
$doc->loadHTML($htmlContent);
|
|
$xpath = new DOMXPath($doc);
|
|
|
|
// Rechercher les éléments avec la classe "timetable-container"
|
|
$elements = $xpath->query('//div[contains(@class, "timetable-container")]');
|
|
|
|
// Créer un tableau pour stocker les données extraites
|
|
$data = array();
|
|
|
|
// Parcourir les éléments et extraire le contenu
|
|
foreach ($elements as $element) {
|
|
$data[] = $element->nodeValue;
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
|
|
// Récupérer le contenu HTML de l'URL
|
|
$htmlContent = getHTMLContent($url);
|
|
|
|
// Extraire les données de la classe HTML "timetable-container"
|
|
$data = extractDataFromHTML($htmlContent);
|
|
|
|
// Convertir les données en format JSON
|
|
$jsonData = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
|
|
|
|
// Afficher le JSON résultant
|
|
header('Content-Type: application/json');
|
|
//echo $jsonData;
|
|
#$data = explode("\n", $data);
|
|
$data = json_decode($jsonData, true);
|
|
|
|
// Suppression des caractères "\n" dans les valeurs du tableau
|
|
/*$data = array_map(function ($value) {
|
|
if (is_string($value)) {
|
|
return str_replace("\n", "", $value);
|
|
}
|
|
return $value;
|
|
}, $data);*/
|
|
|
|
// Affichage du tableau résultant
|
|
print_r($data);
|
|
?>
|
|
|