In questo articolo avevo accennato ad alcuni script gratuiti per inserire le previsioni meteo su un sito web e vi avevo lasciato in sospeso con la possibilità di creare uno scripttutto nostro che permettesse di leggere e parsare file XML contenenti previsioni del tempo con PHP.
Esistono diversi siti web che offrono dati meteo in tempo reale o aggiornati ad intervalli regolari sotto forma di file xml. Per alcuni di questi è necessario pagare una piccola quota.
Chiaramente esiste il nostro buon caro amico Google che ci offre tutti gli strumenti gratuiti per i nostri servizi, grazie al servizio di previsioni meteo Google Weather.
Per leggere i dati XML con PHP utilizzeremo SimpleXml disponibile dalla versione 5 di PHP.
Grazie a url in questo formato
http://www.google.com/ig/api?weather=localita&hl=lingua
possiamo accedere al Feed Xml relativo alle previsioni meteo di una determinata località.
Vediamo come possiamo creare uno script in PHP che legga e mostri a video questi dati.
Supponiamo di volere creare una pagina contenente le previsioni meteo relative alla città di Ravenna.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Previsioni meteo</title> </head> <body> <?php // Url previsione meteo google $url ="http://www.google.com/ig/api?weather=ravenna&hl=it&oe=utf-8"; //carichiamo l'XML delle previsioni $xml = simplexml_load_file($url); $dati_attuali = $xml->xpath("/xml_api_reply/weather/current_conditions"); $lista_previsioni = $xml->xpath("/xml_api_reply/weather/forecast_conditions"); ?> <h1>RAVENNA</h1> <div> <strong>PREVISIONI DI OGGI</strong><br /> <img width="120" src="<?php echo 'http://www.google.com'.$dati_attuali[0]->icon['data'];?>" alt=""/><br /> -<?php echo $dati_attuali[0]->temp_c['data'] ?>° C<br /> -<?php echo $dati_attuali[0]->condition['data'] ?><br /> -<?php echo $dati_attuali[0]->wind_condition['data'] ?><br /> -<?php echo $dati_attuali[0]->humidity['data'] ?><br /> </div> <?php foreach ($lista_previsioni as $previsioni) : ?> <div> <?php echo '<br><strong>PREVISIONI PER IL GIORNO:</strong> '.strtoupper($previsioni->day_of_week['data']); ?><br /> <img width="120" src="<?php echo 'http://www.google.com'.$previsioni->icon['data']?>" alt=""/><br /> <?php echo '<strong>Temperature Min</strong>: '.$previsioni->low['data'] ?>° C<br /> <?php echo '<strong>Temperature Max</strong>: '.$previsioni->high['data'] ?>° C <br /> <?php echo '<strong>Previsioni</strong>: '.$previsioni->condition['data'] ?><br /> </div> <?php endforeach ?> </body> </html>
Vediamo in dettaglio le istruzioni del nostro script.
Nella variabile $url memorizzeremo l’url preparato per visualizzare le previsioni della nostra città aggiungendo la querystring finale &oe=utf-8 necessaria per impostare la codifica dei dati su UTF 8 (necessaria per SimpleXML).
La funzione simplexml_load_file() permette di caricare il contenuto del file XML in una variabile che nel nostro caso sarà $xml.
Le variabili $dati_attuali e $lista_previsioni accederanno ai rami del file XML che contengono rispettivamente i dati meteo attuali e la lista delle previsioni.
Per permettere questo utilizziamo la funzione xpath() che accede ad uno specifico ramo del file XML come se stessimo per accedere ad una specifica directory.
La variabile $dati_attuali contiene già i valori da leggere e stampare mentre $lista_previsioni ha bisogno di un ciclo per leggere tutti i valori memorizzati (una vera e propria struttura ad array).
E’ molto più semplice guardare il codice che spiegarlo.
Ecco il risultato a video
[…] Dai un occhiata alla mia lezione sul parsing dei dati XML meteo attraverso il linguaggio PHP. […]
Grazie mille ^_^ è quello che mi serviva!