Page 1 sur 1

Parser un fichier texte

Posté : 07 juil. 2009, 14:00
par meteo71
Bonjour,

je ne suis pas très doué en php et mon problème va sûrement vous faire rire ...

j'ai besoin de parser un fichier texte : http://astronomie89.free.fr/statIC.txt

Voila ce que je fais lorsque les informations sont séparées par un symbole (ici une *), mais dans ce fichier, il n'y a rien pour séparer les informations :

Code : Tout sélectionner

$contents3 = file_get_contents('http://astronomie89.free.fr/statIC.txt'); // Récupération du contenu du fichier dans une variable3 $tabContents3 = explode("*", $contents3); // Transformation de la variable en tableau $nomchenove=$tabContents3[1]; $latitudechenove=$tabContents3[2]; $longitudechenove=$tabContents3[3]; $elevationchenove=$tabContents3[4]; ... ect
[/php]

Merci de votre aide et de votre compréhension

Posté : 07 juil. 2009, 15:16
par techietim
ce bon?
<?php
function fi($ligne){
	return substr($ligne, 0, 1) != '#';
}
$informations = file('http://astronomie89.free.fr/statIC.txt', FILE_IGNORE_NEW_LINES);
$informations = array_filter($informations, 'fi');

$nouveau = array();
foreach($informations as $ligue){
	$actuel = explode('=', $ligue);
	$nouveau[$actuel[0]] = $actuel[1];
}

print_r($nouveau);

Posté : 07 juil. 2009, 21:35
par meteo71
Bonsoir,

merci pour le coup de main :wink:

J'ai l'impression que cela marche bien : http://www.meteo-bourgogne.com/observat ... hampi2.php

mais je voudrais maintenant pouvoir choisir les valeurs du tableau à afficher. Comment je fais pour mettre dans une variable différente, les valeurs du tableau. Par ex dans $a la valeur de [id_station] puis dans $b, la valeur de [date_releve] et ainsi de suite ?

Merci

Ps : Pourrais-tu m'expliquer un peu ton code, notamment la fonction fi et d'ou sort le ^ligue ??

Posté : 07 juil. 2009, 22:36
par micetf
Bonsoir,

J'espère répondre à meteo71,
sans trahir techietim
en reprenant le code de ce dernier
commenté...
<?php
// Suppression des lignes de commentaires
function fi($ligne){
    return substr($ligne, 0, 1) != '#';
}

// Lecture du fichier et récupération du résultat dans $informations 
$informations = file('http://astronomie89.free.fr/statIC.txt', FILE_IGNORE_NEW_LINES);

// $informations récupère les éléments du tableau $informations , filtrés grâce à la fonction fi
$informations = array_filter($informations, 'fi');

$nouveau = array();
// Pour chaque ligne du tableau $informations
foreach($informations as $ligne){
	//  On coupe la ligne au '='.  Ce qui est avant sera dans actuel[0]. Ce qui est après dans actuel[1].
    $actuel = explode('=', $ligne);
	//  On ajoute une ligne au nouveau tableau : à la clé $actuel[0] correspond la valeur $actuel[1].
    $nouveau[$actuel[0]] = $actuel[1];
}
...et complété.
// Pour accéder à une valeur, quand on connait la clé, il suffit par exemple de faire :
echo $nouveau['id_station']."<br/>";
echo $nouveau['date_releve']."<br/>";
Fred

Posté : 08 juil. 2009, 16:10
par meteo71
C'est parfait !

Merci beaucoup à vous 2