Insertion dans php via un fichier texte

Petit nouveau ! | 5 Messages

17 juil. 2011, 20:26

Bonjour à tous,
Je bloque depuis quelques heures sur fgets.
Je maîtrise ce genre de fonctions pour intégrer une donnée valeur correspondant à un paramètre grâce à <?=$ws["parameter"]?> dans ma page :
<?

$f = @fopen("current.txt", "r");
while($f && !feof($f))
{
	$value = fgets($f);
	{
		list($parameter,$parvalue)=explode(" ", $value);
		$ws["$parameter"]=trim($parvalue);
	}
}
@fclose($f);
?>

Voilà mon problème : à partir du fichier texte ci-dessous :
  • Clermont-Ferrand, France (LFLC) 45-47N 003-10E 330M
    Jul 17, 2011 - 10:00 AM EDT / 2011.07.17 1400 UTC
    Wind: from the WSW (250 degrees) at 15 MPH (13 KT) (direction variable):0
    Visibility: greater than 7 mile(s):0
    Sky conditions: mostly cloudy
    Temperature: 66 F (19 C)
    Dew Point: 48 F (9 C)
    Relative Humidity: 52%
    Pressure (altimeter): 29.80 in. Hg (1009 hPa)
    ob: LFLC 171400Z 25013KT 210V290 9999 BKN043 SCT070 19/09 Q1009 NOSIG
    cycle: 14
Je souhaite accèder aux valeurs en rouge sachant que ces valeurs changent et que pour compliquer "mostly cloudy" sera "cloudy" et que "direction variable" disparaitra en fonction de la météo du moment. Je m'arrache les cheveux. :priere:
Merci par avance pour votre précieuse aide

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

17 juil. 2011, 22:42

Salut,

Si dans ton fichier il n'y a que ce que tu a mis et que tu utilise php5 (sinon il serait temps XD )
Je te conseil la fonction file tu aura un tableau avec une ligne du fichier par "case" du tableau.

Ensuite penche toi sur les expressions régulières pour avoir les infos que tu souhaite ;)

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 171 Messages

17 juil. 2011, 23:07

Tiens :
$elements = file('truc.txt');
$keep = array('Sky conditions','Wind','Temperature','Dew Point','Relative Humidity','Pressure (altimeter)','Visibility');
foreach($elements as $element)
{
    $line = explode(": ",$element);
    $t = array ($line[0] => $line);
    if(in_array(key($t),$keep))
    {
        if(key($t) == $line[0])
        {
            unset($line[0]);
            $line = array_values($line);
        }
        $sort[key($t)] = $line[0];
    }
}
Si le résultat peut être large comme les valeurs que retourne ce tableau, c'est bon, sinon ta plus qu'a faire des regex sur les valeurs qui t’intéressent comme à dit Moogli ! :wink:
Le bon jugement s'apprend par l'expérience qui s'acquiert en partie par le mauvais jugement.

Petit nouveau ! | 5 Messages

19 juil. 2011, 14:10

bonjour moogli & Skw33d

Merci pour vos réponses
J'ai opté pour la méthode de moogli mais je garde sous le coude les codes à Skw33d :)

Salutations à vous deux