Bonjour,
Dans le cadre du développement de mon site web je souhaiterais intégrer une fonction de "rapport d'observation de terrain en direct".
Celle-ci s’appuie sur un fichier récupérer sur un serveur distant via une fonction PHP.
Le fichier en question contient une seul ligne sous cette forme symbolique:
METAR CCCC YYGGggZ AUTO ddffGfmfmKT VVVVDv w'w' NsNsNsHsHsHs or CLR TT/T'dT'd PHPHPHPH=
pour exemple, un message réel:
METAR LFPO 292000Z 30015G25KT 7000 -SN BKN008 OVC040 M05/M08 1015 NOSIG=
(pour un peu plus d'aide: http://zebulon1er.free.fr/codes.htm (ce n'est ni mon site ni une pub )
voila mon problème:
je souhaiterais extraire chaque partie du code en découpant la chaine à l'aide de la fonction "explode" puis traiter le résultat obtenue comme un tableau avec un "FOR" en identifiant chaques sous code par une expression rationnelle.
seulement dans mon script les expressions rationnelles ne marchent pas vraiment (c'est la première fois que je les utilises ) du coup je n'arrive plus du tout à avancer.
La chaine étant de longueur variable au grès des paramètres météorologiques plus ou moins nombreux (précipitations ou non, plus ou moins de nuages, remarques ou évolution ...) je ne vois que cette façon de traiter celle-ci:
Je vous remercie pour votre aide je suis vraiment perdu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <? //récupération du fichier $metar = file_get_contents('ftp://tgftp.nws.noaa.gov/data/observations/metar/stations/LFMT.TXT'); echo $metar; echo "<br/><br/>"; // éclatement de la chaine $run = explode(" ", $metar); $tail = count($run); //expressions rationnelles $P = "/Q\d{4}/"; // expression rationnelle pression ok $D = "/^(19|20)\d\d[-/.]([1-9]|0[1-9]|1[012])[- /.]([1-9]|0[1-9]|[12][0-9]|3[01])$/"; //date marche pas $V = "/^(\d{3})V(\d{3})$/"; //vitesse de vent marche pas //boucle de traitement du tableau for($i = 0; $i<$tail; $i++) { if (preg_match($D,$run[$i], $D1)) print_r ($D1[0]); //date if (preg_match($V,$run[$i], $V1)) print_r ($V[0]); //vitesse de vent if (preg_match($P,$run[$i], $out)) print_r (substr($out[0], 1)); //pression OK if ($run[$i] == "CAVOK") print_r ("visibilité superieur à 10Km"); } ?>
Stormfever
Partager