j'ai un petit soucis avec le script de vigilance, j'ai ce message affiché en bas de page :
j'ai donc modifié le code : file_get_contents() comme indiqué par PascalWMR dans un autre post avec la fonction :
Code : Tout sélectionner
<!-- réalisé le 24/02/2017 sur une idée de Dominique Herraire,
conjointement par Dominique et Jean Turlier
Mise à jour le 27/02/2017
La ligne 8 est à personnaliser-->
<?php
function file_get_contents_curl( $url ) {
$ch = curl_init();
curl_setopt( $ch, CURLOPT_AUTOREFERER, TRUE );
curl_setopt( $ch, CURLOPT_HEADER, 0 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, TRUE );
$data = curl_exec( $ch );
curl_close( $ch );
return $data;
}
$dept="33"; /*******give here departement number with 2 digits****
****************************************************
**********détermination du type d'alerte************
****************************************************/
function vigi($alerte) //convert vigilance identifier to description
{
switch ($alerte)
{
case 1:
return " Pas d'alerte";
break;
case 2:
return " Vigilance JAUNE EN COURS";
break;
case 3:
return " Vigilance ORANGE EN COURS";;
break;
case 4:
return " Vigilance ROUGE EN COURS";
break;
}
}
/***************************************************
**********détermination du type de risque***********
****************************************************/
function risque($risque)
{
switch ($risque) {
case 1:
return " Vent violent";
break;
case 2:
return " Pluie-inondation";
break;
case 3:
return " Orages";
break;
case 4:
return " Inondation";
break;
case 5:
return " Neige-verglas";
break;
case 6:
return " Canicule";
break;
case 7:
return " Grand-froid";
break;
case 8:
return " Avalanche";
break;
case 9:
return " Vagues-submersion";
break;
}
}
/***************************************************
***************formatage de la date*****************
****************************************************/
function formatdate($madate)
{
return substr($madate,6,2).'/'.substr($madate,4,2).'/'.substr($madate,0,4).' à '.substr($madate,8,2).'h'.substr($madate,10,2);
}
function departement($dept)
{
$nom_departement = array (
"01" => "l'Ain",
"02" => "l'Aisne",
"03" => "l'Allier",
"04" => "les Alpes-de-Haute Provence",
"05" => "les Hautes-Alpes",
"06" => "les Alpes Maritimes",
"07" => "l'Ardèche",
"08" => "les Ardennes",
"09" => "l'Ariège",
"10" => "l'Aube",
"11" => "l'Aude",
"12" => "l'Aveyron",
"13" => "les Bouches-du-Rhône",
"14" => "le Calvados",
"15" => "le Cantal",
"16" => "les Charentes",
"17" => "la Charente-Maritime",
"18" => "le Cher",
"19" => "la Corrèze",
"20" => "la Corse",
"21" => "la Côte d'Or",
"22" => "les Côtes d'Armor",
"23" => "la Creuse",
"24" => "la Dordogne",
"25" => "le Doubs",
"26" => "la Drôme",
"27" => "l'Eure",
"28" => "l'Eure-et-Loire",
"29" => "le Finistère",
"30" => "le Gard",
"31" => "la Haute-Garonne",
"32" => "Gers",
"33" => "la Gironde",
"34" => "Hérault",
"35" => "Ille-et-Vilaine",
"36" => "Indre",
"37" => "Indre-et-Loire",
"38" => "Isère",
"39" => "le Jura",
"40" => "les Landes",
"41" => "le Loir-et-Cher",
"42" => "la Loire",
"43" => "la Haute-Loire",
"44" => "la Loire-Atlantique",
"45" => "le Loiret",
"46" => "le Lot",
"47" => "le Lot-et-Garonne",
"48" => "la Lozère",
"49" => "le Maine-et-Loire",
"50" => "la Manche",
"51" => "la Marne",
"52" => "la Haute-Marne",
"53" => "la Mayenne",
"54" => "la Meurthe-et-Moselle",
"55" => "la Meuse",
"56" => "le Morbihan",
"57" => "la Moselle",
"58" => "la Nièvre",
"59" => "le Nord",
"60" => "l'Oise",
"61" => "l'Orne",
"62" => "le Pas-de-Calais",
"63" => "le Puy-de-Dôme",
"64" => "les Pyrenées-Atlantiques",
"65" => "les Hautes-Pyrenées",
"66" => "les Pyrenées-Orientales",
"67" => "le Bas-Rhin",
"68" => "le Haut-Rhin",
"69" => "le Rhône",
"70" => "la Haute-Saône",
"71" => "la Saône-et-Loire",
"72" => "la Sarthe",
"73" => "la Savoie",
"74" => "la Haute-Savoie",
"75" => "Paris",
"76" => "la Seine-Maritime",
"77" => "la Seine-et-Marne",
"78" => "Yvelines",
"79" => "les Deux-Sèvres",
"80" => "la Somme",
"81" => "le Tarn",
"82" => "le Tarn-et-Garonne",
"83" => "le Var",
"84" => "le Vaucluse",
"85" => "la Vendée",
"86" => "la Vienne",
"87" => "la Haute-Vienne",
"88" => "les Vosges",
"89" => "Yonne",
"90" => "le Territoire de Belfort",
"91" => "l'Essonne",
"92" => "les Hauts-de-Seine",
"93" => "la Seine-Saint-Denis",
"94" => "le Val-de-Marne",
"95" => "le Val-d'Oise"
);
return $nom_departement[$dept];
}
/***************************************************/
/***************************************************/
/***************************************************/
/***************************************************/
if (strlen($dept)!=2){$dept=substr($dept,0,2);}
/***************************************************
****************début du traitement*****************
****************************************************/
$xml = file_get_contents_curl('http://vigilance.meteofrance.com/data/NXFR33_LFPW_.xml');
// your file is in the string "$xml" now.
file_put_contents("vigilance.xml",$xml); // now your xml file is saved. There is no way to use directly fopen with xml web page
$position = strpos($xml, "dateinsert="); // look for dateinsert
$dateinsert= substr($xml,$position+12,12); // get its value
$position = strpos($xml, "dateprevue="); // look for dateprevue
$dateprevue= substr($xml,$position+12,12); // get its value
$texte='Vigilance météo pour le département de la Gironde et/ou son littoral \n\n';$datediffusion = "Diffusion : le ".formatdate($dateinsert);
$datedebut = "Validité : jusqu'au ".formatdate($dateprevue);
$pos=0;
/***************************************************/
$position = strpos($xml, '<DV dep="'.$dept.'" coul='); //locate departement
$couleur= substr($xml,$position+19,1)*1; // get its vigilance value
/***************************************************/
/*****************entête de la box******************/
/***************************************************/
if ($couleur !=1)
{
$texte .=$datediffusion. '\n';
$texte .=$datedebut.'\n';
$texte .= vigi($couleur);
$texte .= '\n';
}
/***************************************************/
/***************************************************/
/**************Détermination des risques************/
/***************************************************/
/***************************************************/
/***************************************************/
/************Détermination du 1er risque************/
/***************************************************/
if ($couleur !=1 )
{
$pos = strpos($xml, "risque val=",$position); // in case of vigilance locate its risque identifier
$risque= substr($xml,$pos+12,1); //get risque identifier
$texte .= " Risque(s) : ";
$texte .= '\n';
$texte .= risque($risque); //get risque description
$pos +=1; //offset to start 1 char farer
/***************************************************/
/***********Détermination du 2éme risque************/
/***************************************************/
$pos1 = strpos($xml, "risque val=",$pos)*1;
if (($pos1-$pos)<20)
{
$risque= substr($xml,$pos1+12,1);
$texte .= '\n';
$texte .= risque($risque);
$pos1 +=1;
/***************************************************/
/**********Détermination du 3ème risque***********/
/***************************************************/
$pos2 = strpos($xml, "risque val=",$pos1)*1;
if (($pos2-$pos1)<20 )
{
$risque= substr($xml,$pos2+12,1);
$texte .= '\n';
$texte .= risque($risque);
$pos2 +=1;
/***************************************************/
/**********Détermination du 4ème risque***********/
/***************************************************/
$pos3 = strpos($xml, "risque val=",$pos2)*1;
if (($pos3-$pos2)<19)
{
$risque= substr($xml,$pos3+12,1);
$texte .= '\n';
$texte .= risque($risque);
$pos3 +=1;
/***************************************************/
/**********Détermination du 5ème risque***********/
/***************************************************/
$pos4 = strpos($xml, "risque val=",$pos3)*1;
if (($pos4-$pos3)<20)
{
$risque= substr($xml,$pos4+12,1);
$texte .= '\n';
$texte .= risque($risque);
$pos4 +=1;
}
}
}
}
}
$texte .= '\n';
/***************************************************/
/***************************************************/
/***************Departement littoral****************/
/*************cas où on a un dept +10***************/
/***************************************************/
$couleur1=0;
$position1 = strpos($xml, '<DV dep="'.$dept.'10" coul='); //locate departement value
$couleur1= substr($xml,$position1+21,1);
// get its vigilance value
/***************************************************/
/**************Détermination vigilance**************/
/***************************************************/
if ($pos!=0)
{
/***************************************************/
/***********entête si le reste du dept *************/
/*************n'est pas en vigilance****************/
/***************************************************/
if (($couleur1>1) && ($couleur<=1))
{
$texte .=$datediffusion. '\n';
$texte .=$datedebut.'\n';
$texte .= '\n';
}
}
if ($couleur1 >1)
{
$texte .="Littoral : ". vigi($couleur1);
$texte .= '\n';
$pos = strpos($xml, "risque val=",$position1); // in case of vigilance locate its risque identifier
$risque= substr($xml,$pos+12,1); //get risque identifier
$texte .= " Risque :".'\n'.risque($risque);//get risque description
}
if ($couleur1 >=3 || $couleur >=3 )
{
$posdeb = strpos($xml, '<VCOMMENTAIRE texte="'); // look for dateinsert
If ($posdeb>10)
{
$posdeb += 21;
$posfin = strpos($xml, '"/>',$posdeb); // look for dateinsert
$long=$posfin-$posdeb;
$commentaire= substr($xml,$posdeb,$long);
if(strlen($commentaire)>70)
{
$texte .='\n\n Commentaires : \n';
/***************************************************/
/**************Mise des commentaires****************/
/********** sur plusieurs lignes pour***************/
/*********réduire la taille de la boxe**************/
/***************************************************/
$posbeg=0;
$i=0;
$nbligne=floor($long / 70)+1;
while ($i < $nbligne) :
{
if ($posbeg+70>strlen($commentaire)) {$myoffset= strlen($commentaire)*1;}
else {$myoffset=$posbeg+70;}
$posend=strpos($commentaire," ",$myoffset)*1;//(($i+1)*50));
if ($posend==0) {$posend=$long;}
$mylong=$posend-$posbeg;
$myline = substr($commentaire,$posbeg,$mylong);
$texte .= $myline.'\n';
$i++;
$posbeg=$posend;
}
endwhile;
}
else
{
$texte .='\n\n Commentaires Météo France : \n';
$mycomment=$commentaire;
}
}
}
$texte .= '\n';
$texte .= '\nPlus de details en cliquant sur la carte de vigilance';
$texte .= '\nSource : Météo France';
?>
<script type="text/javascript">
var texte = "<?php echo $texte; ?>";
var couleur = "<?php echo $couleur; ?>";
var couleur1 = "<?php echo $couleur1; ?>";
//if((couleur != 1 || couleur1 != 1 ) && couleur !=2 ){alert (texte);}; //create popup alert box without yellow vigilance
if(couleur >= 2 || couleur1 >= 2 ){alert (texte);}; // create popup alert box for vigilance 2, 3 and 4
</script>