A la demande de chriss, ma version revue et corrigée avec la prise en compte de l'ensoleillement.
Code : Tout sélectionner
<?php
$repertoire = ".";
$directory = opendir($repertoire);
$formulaire .= "<form method='post'>
<SELECT name='select'>
<OPTION VALUE=''>Selectionner</OPTION>";
while ($fread = readdir($directory)) {
//on lit l'extension, on ne prend que les .txt
$explode_point = explode('.',$fread);
$extension = $explode_point[1];
//si l'extension est bien .txt
if(($extension == 'txt' or $extension == 'TXT') && (substr($fread,0,4)=='noaa') && (strlen($fread) == 14))
{
$formulaire .= "<OPTION VALUE='".$fread."'>".$explode_point[0]."</OPTION>";
}
}
//on ferme le dossier
closedir($directory);
$formulaire .= "</SELECT>
<INPUT type='submit' value='Go'>
</form>";
//on affiche le formulaire
echo $formulaire;
//récupèration des variables
if(!$_POST['select']){
$fichier = "";
}
else{
$fichier = "./".$_POST['select']."";
echo"
<head>
<title>Climatologie mensuelle </title>
</head>
"
;
$fp = fopen ("$fichier",'r');
$content = fread ($fp,filesize($fichier));
$separ_1 = explode("----------
",$content);
$separ_2 = explode("
----------",$separ_1[1]);
$table =$separ_2[0];
$linetitle= explode("
",$separ_1[0]);
$char = array (" ","W");
$newchar = array ("","O");
########################################
#Récupération des moyennes mensuelles ##
########################################
$title1=trim($linetitle[0]);
$title2=trim($linetitle[2]);
$meantemp_m = substr ($separ_1[2],7,5);
$meantemp_m=str_replace( ',' , '.',$meantemp_m );
$highttemp_m = substr ($separ_1[2],15,5);
$highttemp_m=str_replace( ',' , '.', $highttemp_m );
$hourhighttemp_m = substr ($separ_1[2],25,5);
$lowtemp_m = substr ($separ_1[2],30,5);
$lowtemp_m=str_replace( ',' , '.' , $lowtemp_m);
$hourlowtemp_m = substr ($separ_1[2],40,5);
$hum_m = substr ($separ_1[2],47,3);
$hum_m=str_replace( ',' , '.' ,$hum_m);
$baro_m = substr ($separ_1[2],55,6);
$baro_m=str_replace( ',' , '.',$baro_m );
$rain_m = substr ($separ_1[2],66,5);
$rain_m=str_replace( ',' , '.',$rain_m );
$ventmoyen_m = substr ($separ_1[2],75,5);
$ventmoyen_m=str_replace( ',' , '.', $ventmoyen_m );
$rafales_m = substr ($separ_1[2],85,5);
$rafales_m=str_replace( ',' , '.', $rafales_m );
$hourrafales_m = substr ($separ_1[2],95,5);
$domdir_m = substr ($separ_1[2],103,4);
$domdir_m = trim($domdir_m);
$soleil_m = substr ($separ_1[2],109,5);
########################################
#Récupération des données journalieres##
########################################
$nb = substr_count ($table, "
");
$ligne ="";
$color = array('#ffffff','#ffff00','#ff00ff','#ffffff');
$gel=0;
$fortgel=0;
$sansdegel=0;
$froide=0;
$agreable=0;
$chaleur=0;
$canicule=0;
$pluie=0;
$pluie_1=0;
$pluie_5=0;
$pluie_10=0;
$maxrain=0;
$replow=array(' ',' ');
$rephight=array(' ',' ');
$repmean=array(' ',' ');
for ($i=0; $i<$nb+1; $i++)
{
#selection ligne
$line = explode("
",$table);
#séparation et classement des valeurs
$jour = substr ($line[$i],2,2);
$meantemp = substr ($line[$i],7,5);
$meantemp = str_replace( ',' , '.', $meantemp );
$highttemp = substr ($line[$i],15,5);
$highttemp=str_replace( ',' , '.', $highttemp );
$hourhighttemp = substr ($line[$i],22,5);
$lowtemp = substr ($line[$i],30,5);
$lowtemp = str_replace( ',' , '.', $lowtemp );
$hourlowtemp = substr ($line[$i],37,5);
$hum = substr ($line[$i],47,3);
$baro = substr ($line[$i],55,6);
$baro = str_replace( ',' , '.',$baro );
$rain = substr ($line[$i],66,5);
$rain = str_replace( ',' , '.',$rain );
$ventmoyen = substr ($line[$i],75,5);
$ventmoyen = str_replace( ',' , '.', $ventmoyen );
$rafales = substr ($line[$i],85,5);
$rafales = str_replace( ',' , '.' ,$rafales);
$hourrafales = substr ($line[$i],92,5);
$domdir = substr ($line[$i],103,4);
$domdir = trim($domdir);
$soleil = substr ($line[$i],111,5);
$tempe = array($meantemp,$highttemp,$lowtemp);
$color = array('#ff0000','#ffff00','#ff00ff','#ff00ff');
for ($c=0; $c<count($tempe); $c++)
{
#colorisation température
if($tempe[$c] <= '-25') {$color[$c]='#003366';}
elseif($tempe[$c] > '-25' && $tempe[$c] <= '-20') {$color[$c]='#003399';}
elseif($tempe[$c] > '-20' && $tempe[$c] <= '-15') {$color[$c]='#0000cc';}
elseif($tempe[$c] > '-15' && $tempe[$c] <= '-10') {$color[$c]='#0000ff';}
elseif($tempe[$c] > '-10' && $tempe[$c] <= '-5') {$color[$c]='#0099ff'; }
elseif($tempe[$c] > '-5' && $tempe[$c] <= '0') {$color[$c]='#66ffff'; }
elseif($tempe[$c] > '0' && $tempe[$c] <= '5') {$color[$c]='#66ff99'; }
elseif($tempe[$c] > '5' && $tempe[$c] <= '10') {$color[$c]='#66ff00';}
elseif($tempe[$c] > '10' && $tempe[$c] <= '15') {$color[$c]='#ffff00'; }
elseif($tempe[$c] > '15' && $tempe[$c] <= '20') {$color[$c]='#ffcc00'; }
elseif($tempe[$c] > '20' && $tempe[$c] <= '25') {$color[$c]='#ff9900'; }
elseif($tempe[$c] > '25' && $tempe[$c] <= '30') {$color[$c]='#ff6600'; }
elseif($tempe[$c] > '30' && $tempe[$c] <= '35') {$color[$c]='#ff3300'; }
elseif($tempe[$c] > '35' && $tempe[$c] <= '40') {$color[$c]='#cc0000';}
elseif($tempe[$c] > '40') {$color[$c]='#660000';}
else {$color[$c]='#ff00ff';}
}
#colorisation pluie
if($rain >= '0.2' && $rain <= '1') {$color[3]='#00fe96';}
elseif($rain > '1' && $rain <= '2.5') {$color[3]='#00fefe';}
elseif($rain > '2.5' && $rain <= '5') {$color[3]='#00c8fe';}
elseif($rain > '5' && $rain <= '7.5') {$color[3]='#0096fe'; }
elseif($rain > '7.5' && $rain <= '10') {$color[3]='#0064fe'; }
elseif($rain > '10' && $rain <= '15') {$color[3]='#3200fe'; }
elseif($rain > '15' && $rain <= '30') {$color[3]='#6400fe';}
elseif($rain > '30' && $rain <= '60') {$color[3]='#9600fe'; }
elseif($rain > '60' && $rain <= '100') {$color[3]='#c800fe'; }
elseif($rain > '100') {$color[]='#640064';}
else {$color[3]='#ffffff';}
#colorisation vent
if($rafales < '10' ) {$color[4]='#ffffff';}
elseif($rafales >= '10' && $rafales < '20') {$color[4]='#ebebeb';}
elseif($rafales >= '20' && $rafales < '30') {$color[4]='#d7d7d7';}
elseif($rafales >= '30' && $rafales < '40') {$color[4]='#c4c4c4'; }
elseif($rafales >= '40' && $rafales < '50') {$color[4]='#afafaf'; }
elseif($rafales >= '50' && $rafales < '60') {$color[4]='#AB8787'; }
elseif($rafales >= '60' && $rafales < '70') {$color[4]='#D07676';}
elseif($rafales >= '70' ) {$color[4]='#ff0000'; }
else {$color[4]='#222222';}
#colorisation pression
if($baro <= '990') {$color[5]='##0000ff';}
elseif($baro > '990' && $baro <= '995') {$color[5]='##0099ff'; }
elseif($baro > '995' && $baro <= '1000') {$color[5]='#66ffff'; }
elseif($baro > '1000' && $baro <= '1005') {$color[5]='#66ff99'; }
elseif($baro > '1005' && $baro <= '1010') {$color[5]='#66ff00';}
elseif($baro > '1010' && $baro <= '1015') {$color[5]='#ffff00'; }
elseif($baro > '1015' && $baro <= '1020') {$color[5]='#ffcc00'; }
elseif($baro > '1020' && $baro <= '1025') {$color[5]='#ff9900'; }
elseif($baro > '1025' && $baro <= '1030') {$color[5]='#ff6600'; }
elseif($baro > '1030' && $baro <= '1035') {$color[5]='#ff3300'; }
elseif($baro > '1035' && $baro <= '1040') {$color[5]='#cc0000';}
elseif($baro > '1040') {$color[5]='#660000';}
else {$color[5]='#ff00ff';}
#colorisation ensoleillement
if($soleil <= ' 0,') {$color[6]='#cfb447';}
elseif($soleil > ' 1' && $soleil <= ' 2,') {$color[6]='#d2b644'; }
elseif($soleil > ' 2' && $soleil <= ' 3') {$color[6]='#d7c040'; }
elseif($soleil > ' 3' && $soleil <= ' 4') {$color[6]='#dbc73c'; }
elseif($soleil > ' 4' && $soleil <= ' 5') {$color[6]='#e8cb36';}
elseif($soleil > ' 5' && $soleil <= ' 6') {$color[6]='#e4d732'; }
elseif($soleil > ' 6' && $soleil <= ' 7') {$color[6]='#e9d12e'; }
elseif($soleil > ' 7' && $soleil <= ' 8') {$color[6]='#edd529'; }
elseif($soleil > ' 8' && $soleil <= ' 9') {$color[6]='#f1d825'; }
elseif($soleil > ' 9' && $soleil <= '10') {$color[6]='f5db21'; }
elseif($soleil > '10' && $soleil <= '11') {$color[6]='#fae91d';}
elseif($soleil > '11,00') {$color[6]='#fef218';}
else {$color[6]='#cfb447';}
#repère des extremes
$replow=array('','');
$rephight=array('','');
$repmean=array('','');
$reprafales=array('','');
if ($lowtemp == $lowtemp_m) {$replow = array("<b>","</b></font>");}
if ($highttemp == $highttemp_m) {$rephight = array("<b>","</b></font>");}
if ($rafales == $rafales_m) {$reprafales = array("<b>","</b></font>");}
if ($lowtemp <='0' && $lowtemp !="") {$gel=$gel+1;} else {$gel=$gel;}
if ($lowtemp <='-5'&& $lowtemp !="") {$fortgel=$fortgel+1;} else {$fortgel=$fortgel;}
if ($lowtemp <='0' && $highttemp <='0' && $lowtemp !="") {$sansdegel=$sansdegel+1;} else {$sansdegel=$sansdegel;}
if ($highttemp <='10') {$froide=$froide+1;} else {$froide=$froide;}
if ($highttemp >='20') {$agreable=$agreable+1;} else {$agreable=$agreable;}
if ($highttemp >='30') {$chaleur=$chaleur+1;} else {$chaleur=$chaleur;}
if ($highttemp >='35') {$canicule=$canicule+1;} else {$canicule=$canicule;}
if ($rain >'0' && $rain !="") {$pluie=$pluie+1;} else {$pluie=$pluie;}
if ($rain >='1' && $rain !="") {$pluie_1=$pluie_1+1;} else {$pluie_1=$pluie_1;}
if ($rain >='5' && $rain !="") {$pluie_5=$pluie_5+1;} else {$pluie_5=$pluie_5;}
if ($rain >='10' && $rain !="") {$pluie_10=$pluie_10+1;} else {$pluie_10=$pluie_10;}
if ($rain > $maxrain && $rain !="") {$maxrain="$rain";} else {$maxrain=$maxrain;}
#incrémentation du tableau
if ($meantemp != ""){
$ligne .= "<tr >
<td bgcolor='gray' align='center'><font color='white' >$jour</td>
<td bgcolor='$color[2]' width='65' align='center'>$replow[0] $lowtemp °C $replow[1]</td>
<td bgcolor='$color[1]' width='65' align='center'>$rephight[0] $highttemp °C $rephight[1]</td>
<td bgcolor='$color[0]' width='65' align='center'>$repmean[0] $meantemp °C $rephight[1]</td>
<td bgcolor='$color[4]' width='180' align='center'>$ventmoyen km/h ($reprafales[0] $rafales km/h $reprafales[1])</td>
<td bgcolor='#ffffff' width='65' align='center'><img src='pictos/$domdir.gif'/>$domdir</td>
<td bgcolor='$color[3]' width='80' align='center'>$rain mm</td>
<td bgcolor='$color[6]' width='80' align='center'>$soleil h</td>
<td bgcolor='#ffffff' width='80' align='center'>$hum %</td>
<td bgcolor='$color[5]' width='80' align='center'>$baro hPa</td>
</tr>
";}
}
#################
#affichage final#
#################
echo "
<table border='1' >
<td bgcolor='gray' colspan='10' align='center'><font color='white' ><b>$title1</b></td>
<tr bgcolor='gray'>
<td rowspan='2'><font color='white'><b>Jour</b></font></td>
<td colspan='3' align='center'><font color='white'><b>Température</b></font></td>
<td colspan='2' align='center'><font color='white'><b>Vent</b></font></td>
<td rowspan='2' align='center'><font color='white'><b>Pluie</b></font></td>
<td rowspan='2' align='center'><font color='white'><b>Soleil</b></font></td>
<td rowspan='2' align='center'><font color='white'><b>Humidité</b></font></td>
<td rowspan='2' align='center'><font color='white'><b>Pression</b></font></td>
</tr>
<tr bgcolor='gray'>
<td align='center'><font color='white'>min</font></td>
<td align='center'><font color='white'>max</font></td>
<td align='center'><font color='white'>moy</font></td>
<td align='center'><font color='white'>Vent moyen (rafale max)</font></td>
<td align='center'><font color='white'>Secteur</font></td>
</tr>
$ligne
<tr bgcolor='gray'>
<td><font color='white' face='Verdana' size='2'><b> </b></font></td>
<td align='center'><font color='white'>$lowtemp_m °C</font></td>
<td align='center'><font color='white'>$highttemp_m °C</font></td>
<td align='center'><font color='white'>$meantemp_m °C</font></td>
<td align='center'><font color='white'>$ventmoyen_m km/h ($rafales_m km/h)</font></td>
<td align='center'><font color='white'><img src='pictos/$domdir_m.gif'/>$domdir_m</font></td>
<td align='center'><font color='white'>$rain_m mm</font></td>
<td align='center'><font color='white'>$soleil_m h</font></td>
<td align='center'><font color='white'>$hum_m %</font></td>
<td align='center'><font color='white'>$baro_m hPa</font></td>
</tr>
</table>
<table border='1' width='781'>
<td colspan='2' bgcolor='gray' align='left'><font color='white' >
<p><b>Nombre de jours :</b></p>
</td>
<tr><td bgcolor='gray' align='left'><font color='white' >
<ul>
<li>sans dégel : <b>$sansdegel</b> </li>
<li>avec forte gelée (<=-5): <b>$fortgel</b> </li>
<li>avec gelée : <b>$gel</b> </li>
<li>froide (<10): <b>$froide</b> </li>
<li>agreable (>=20): <b>$agreable</b> </li>
<li>avec chaleur (>=30): <b>$chaleur</b> </li>
<li>avec canicule (>=35): <b>$canicule</b> </li>
</ul>
</td>
<td bgcolor='gray' align='left'><font color='white' >
<ul>
<li>avec pluie : <b>$pluie</b></li>
<li>avec plus de 1mm : <b>$pluie_1</b></li>
<li>avec plus de 5mm : <b>$pluie_5</b></li>
<li>avec plus de 10mm : <b>$pluie_10</b></li>
</ul>
</td></tr></table>
</font>
</body>";
}
?>