In questi giorni, come Programmatore PHP in un attività di Consulenza ho avuto l'esigenza per un sistema di Booking Online di fornire un servizio semplice, cioè un Meteo con le previsioni dei prossimi giorni.
Pur essendo disponibile una moltitudine di siti internet che offrono il proprio codice da copiare e incollare nel proprio sito, per ragioni di Ottimizzazione del Codice e per evitare URL che puntassero all'esterno, come Programmatore PHP ho preferito utilizzare le Google Weather API per creare un piccolo script che ognuno di voi portrà facilmente personalizzare che permetta la generazione di un Meteo PHP utile per le esigenze base di ogni utente.
In questo esempio è possibile vedere il risultato del nostro script, inoltre consiglio ad ogni Programmatore PHP lo studio di alcune funzioni presenti all'interno dello script come la funzione curl_setopt o simplexml_load_file
<?php
// Creiamo un file fisico per evitare problemi di configurazione che si manifestano su alcuni server
$ch = curl_init("http://www.google.com/ig/api?weather=Napoli&hl=it");
$fp = fopen("weather.xml", "w");
//Con la funzione CURL settimano i parametri in maniera che l'XML venga letto correttamente (encoding)
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
//Leggiamo l'XML delle previsioni
$xml = simplexml_load_file("weather.xml");
$current = $xml->xpath("/xml_api_reply/weather/current_conditions");
$forecast_list = $xml->xpath("/xml_api_reply/weather/forecast_conditions");
?>
<h2>Napoli - Oggi</h2>
<div class="weather">
<img src="<?= 'http://www.google.com' . $current[0]->icon['data']?>" alt="weather"/>
<span class="condition">
<br/><?= $current[0]->temp_c['data'] ?>° C<br/>
<?= $current[0]->condition['data'] ?>
</span>
</div>
<h2>Previsioni Prossimi Giorni</h2>
<? foreach ($forecast_list as $forecast) : ?>
<div class="weather">
<img src="<?= 'http://www.google.com' . $forecast->icon['data']?>" alt="weather"/>
<div><?= ucfirst($forecast->day_of_week['data']); ?></div>
<span class="condition">
<?= $forecast->low['data'] ?>° C - <?= $forecast->high['data'] ?>° C<br/>
<?= $forecast->condition['data'] ?>
</span>
</div>
<br/>
<? endforeach ?>