Lecture de fichier en php

Fermé
tonio - 30 avril 2008 à 16:34
Toni-o Messages postés 3 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 5 mai 2008 - 5 mai 2008 à 12:21
Bonjour,

je souhaiterais savoir comment lire et récupérer des chiffres dans un fichier.

le fichier est de ce type: (12,134) (1,123) etc...

j'utilise la fonction (ereg("^\(",$Ligne) pour dire qu'il faut lire à partir de la parenthèse.

Par contre je sais pas comment dire lire puis mettre dans une variable jusqu'à la virgule puis lire et mettre dans une autre variable l'autre coordonnée jusqu'a la parenthèse. Je pensais utiliser substr("$Ligne",1,2); mais le nombre de caractère est aléatoire.

Avez vous une idée?

Merci d'avance
A voir également:

2 réponses

sly-bzh Messages postés 415 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 118
30 avril 2008 à 19:07
Bonjour,
Si tu auras toujours des chiffres et des virgules SEULEMENT, et je suppose que c'est le cas, tu peux utiliser les expressions rationnelles :
// Tout d'abord tu met ton texte dans un fichier .txt que tu va ouvrir et lire
$contenuFichier = file_get_contents("ton_fichier.txt"); 

// L'expression rationnelle
$expressionRationnelle = "#\(([0-9\,]*)\)*#";
$resultat = Array();

preg_match_all($expressionRationnelle, $contenuFichier, $resultat, PREG_PATTERN_ORDER);

// Et enfin on affiche le résultat 
echo "<pre>";
   print_r($resultat);
echo "</pre>";
0
Toni-o Messages postés 3 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 5 mai 2008
1 mai 2008 à 14:08
Merci pour la réponse. Pas évident à comprendre l'expression rationnelle!
0
sly-bzh Messages postés 415 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 118
1 mai 2008 à 14:55
si tu veux un peu plus d'explication je peux te la détailler :
$expressionRationnelle = "#\(([0-9\,]*)\)*#";


"# : indique le début de l'expression rationnelle

\( : on a une ouverture de parenthèse. Il est obligé de l'échappée, la parenthèse étant utilisée pour une fonction spéciale

[0-9\,]* : on a ensuite un/des chiffres entre 0 et 9 et/ou une/des virgules. Là encore il est obligé d'échapper la virgule qui a également une fonction spéciale quand elle est utilisée seule.

\) : et enfin on a une parenthèse qui se ferme

#" : indique la fin de l'expression rationnelle.


et pour pouvoir récupérer des valeurs précises, on met entre parenthèse ce que l'on veut avoir. Ici j'ai mis entre parenthèse [0-9\,]* parceque tu voulais récupérer les chiffres. Si tu voulais récupérer également les parenthèses par exemple tu aurais mis : "#(\([0-9\,]*\)*)#";

Voilà je ne sais pas si j'ai été très clair... Si tu veux avoir un tutoriel clair celui du site du zéro est pas mal du tout : ICI

Et pour la fonction preg_match_all() je te renvois directement vers la documentation officielle
0
Toni-o Messages postés 3 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 5 mai 2008
1 mai 2008 à 22:21
Merci beaucoup pour tes explications. Je connaissais le site du zéro mais j'avoue que je n'avais pas fait le tuto sur les expressions régulières. Je pense qu'avec tes explications je vais pouvoir bien avancer sur mon projet merci!
0
Toni-o Messages postés 3 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 5 mai 2008
5 mai 2008 à 12:21
Salut,
j'ai utilisé ton code et ca marche très bien.
J'ai par contre d'autres questions.

voici le fichier:
xtheo=[2.0000;2.0000;2.0000;2.0000;2.0000;2.0000;2.0000;2.0000;];
ytheo=[0.0000;0.0660;0.1684;0.2762;0.3775;0.4775;0.5800;0.6841;];

J'aimerais récupérer les nombres et les mettre dans des variables.
Par exemple: x1=2.0000 y1= 0.0000 x2=2.0000 y2=0.0660.

Voici mon code mais j'ai un problème pour récupérer les nombres et naviguer dans le tableau de valeur.

// Tout d'abord tu met ton texte dans un fichier .txt que tu va ouvrir et lire
$contenuFichier = file_get_contents("pekee.txt");

// L'expression rationnelle
$expressionRationnelle = "#(\[[0-9\.0-9;]*\])*#";
$resultat = Array();

preg_match_all($expressionRationnelle, $contenuFichier, $resultat, PREG_PATTERN_ORDER);

// Et enfin on affiche le résultat
echo "<pre>";
print_r($resultat);
echo "</pre>";


Si vous avez une idée, merci d'avance!
0