Parsing e lettura file XML contenenti previsioni meteo con PHP

2
3146

meteo

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&#91;0&#93;->icon['data'];?>" alt=""/><br /> 
    -<?php echo $dati_attuali&#91;0&#93;->temp_c['data'] ?>&deg; C<br />
    -<?php echo $dati_attuali&#91;0&#93;->condition['data'] ?><br />
    -<?php echo $dati_attuali&#91;0&#93;->wind_condition['data'] ?><br />
    -<?php echo $dati_attuali&#91;0&#93;->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'] ?>&deg; C<br />
    <?php echo '<strong>Temperature Max</strong>: '.$previsioni->high['data'] ?>&deg; 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

previsioni-meteo

 

2 Commenti

LASCIA UN COMMENTO

Please enter your comment!
Please enter your name here