[PHP] Meteo

Stato
Discussione chiusa ad ulteriori risposte.

kelev

Utente Silver
8 Agosto 2009
7
3
0
57
Vedendo uno script in Perl di blacklight sul meteo, mi è venuta voglia di farne uno in php.
Data la località (in un certo formato), lo script mostrerà le previsioni per mattino,pomeriggio,sera e notte.

PHP:
<?php                                                              

if($argc != 2) {
   print "Usage: php $argv[0] <localita>";
   print "\nEx:    php $argv[0] Livorno-Ferraris/istat-2071\n";
   die;                                                        
}                                                              
$localita = $argv[1];                                          
$tempo = array(                                                
   "01" => "Nuvoloso",                                         
   "02" => "Sereno",                                           
   "03" => "Nebbia",                                           
   "04" => "Nebbia/Sereno",
   "05" => "Sole",
   "06" => "Sole/Nebbia",
   "07" => "Neve",
   "08" => "Neve",
   "09" => "Neve",
   "10" => "Nuvoloso",
   "11" => "Nuvoloso",
   "12" => "Pioggia",
   "13" => "Pioggia",
   "14" => "Pioggia",
   "15" => "Pioggia",
   "16" => "Pioggia",
   "17" => "Pioggia",
   "18" => "Pioggia",
   "19" => "Pioggia",
   "20" => "Pioggia",
   "21" => "Nuvoloso",
   "22" => "Nuvoloso",
   "23" => "Temporale",
   "24" => "Temporale",
   "25" => "Temporale",
   "26" => "Nuvoloso",
   "27" => "Nuvoloso",
);
$ora = array("Mattino", "Pomeriggio", "Sera", "Notte");
$fp  = fsockopen("meteo.it", 80);
if(!$fp) {
   print "Impossibile creare il socket.\n";
   exit;
}
fwrite($fp, "GET /previsioni/{$localita} HTTP/1.1\r\n");
fwrite($fp, "Host: meteo.it\r\n");
fwrite($fp, "Connection: Close\r\n\r\n");
$data = "";
while (!feof($fp)) {
   $data .= @fgets($fp, 255);
}
fclose($fp);
$regex = "#<img src=\"http:\/\/images\.meteo\.it\/MI\/([0-9]+)\.gif\"\/>#";
if(!preg_match_all($regex, $data, $match)) {
   print "Previsioni su {$localita} non trovate.\n";
   exit;
}
for($i = 0;$i < count($ora);$i++) {
   foreach($tempo as $image => $type) {
      if($match[1][$i] == $image) {
         print "{$ora[$i]} -> $type\n";
      }
   }
}

?>
 
Stato
Discussione chiusa ad ulteriori risposte.