Lecture d'un fichier txt par php
Résolu/Fermé
Jperrio
Messages postés
71
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2010
-
30 oct. 2008 à 22:21
fra09 - 14 déc. 2010 à 13:12
fra09 - 14 déc. 2010 à 13:12
A voir également:
- Lecture d'un fichier txt par php
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir un fichier .bin - Guide
- Comment ouvrir un fichier docx ? - Guide
1 réponse
Groarh
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
185
30 oct. 2008 à 23:40
30 oct. 2008 à 23:40
Salut,
examinons attentivement le problème...
La fonction file() transforme un fichier en tableau. Essaye
print_r($fichier);
et tu verras que le type est Array.
Ton foreach extrait les chaînes de ce tableau pour les stocker dans $file, sur lequel tu appelles un explode(). C'est à ce moment que tu recherches les sauts de ligne. Et c'est là que ça coince, et pour deux raisons :
1/ la fonction file() traite déjà les sauts de ligne puisque chaque ligne devient un élément du tableau.
2/ les sauts de ligne ne sont pas du tout codés par <br>, tu confonds avec le html ! Sous les systèmes UNIX, le symbole est \n, et sous DOS c'est \r\n. Mais de toute façon la fonction file() gère ça à ta place, tu n'as pas à t'en soucier.
Grâce au print_r() dont je parle plus haut, tu verras que le code est en fait beaucoup plus simple...
NB : je fais mes tests d'égalité à l'envers, comme ça ça me fait une fatal error si j'oublie un signe "=". Je trouve ça pratique, mais ce n'est qu'une question de goûts...
examinons attentivement le problème...
La fonction file() transforme un fichier en tableau. Essaye
print_r($fichier);
et tu verras que le type est Array.
Ton foreach extrait les chaînes de ce tableau pour les stocker dans $file, sur lequel tu appelles un explode(). C'est à ce moment que tu recherches les sauts de ligne. Et c'est là que ça coince, et pour deux raisons :
1/ la fonction file() traite déjà les sauts de ligne puisque chaque ligne devient un élément du tableau.
2/ les sauts de ligne ne sont pas du tout codés par <br>, tu confonds avec le html ! Sous les systèmes UNIX, le symbole est \n, et sous DOS c'est \r\n. Mais de toute façon la fonction file() gère ça à ta place, tu n'as pas à t'en soucier.
Grâce au print_r() dont je parle plus haut, tu verras que le code est en fait beaucoup plus simple...
<?php // Lit le fichier texte $fichier = file('essai.txt'); # print_r($fichier); // retirer le "#" pour vérifier // Affiche toutes les lignes foreach ( $fichier as $line ) { if ( "col4" == $line ) { print $line[7]; } } ?>
NB : je fais mes tests d'égalité à l'envers, comme ça ça me fait une fatal error si j'oublie un signe "=". Je trouve ça pratique, mais ce n'est qu'une question de goûts...
1 nov. 2008 à 10:10
J ai mis ton code en ligne et ca affiche le contenu de tout le fichier txt.
Pour te rendre compte, va sur jperrio2.free.fr/test
C'est la seul ligne du tableau rempli que j ai modifié.
Merci de me dire si tu vois une solution.
1 nov. 2008 à 11:25
Si je suis bien, ton fichier texte est de la forme :
Si oui, ce n'est pas évident de travailler dessus...
Une solution qui te simplifierait les choses :
Arrange ton texte comme ça :
En choisissant comme séparateur un caractère (voire une chaîne) que tu es sûr de ne pas utiliser.
Ensuite, il te 'suffit' de faire un explode( $separateur, $ligne) (qui va générer un tableau), et de tester :
1 nov. 2008 à 22:32
aVEC LA FONCTION PRINT8R? J AI TROUV2 UNE SOLUTION.
a+
14 déc. 2010 à 13:12
je chercher coment je pourrait faire des espaces dans mes block commentaires en lisant dans un fichier text.
dans mon fichier text contient les informations suivante nom, date, heure et commentaire.
j'aimerai donc que chaque commentaire soit séparés dans ma page web.
j'utilise un script php qui lit bien tout les données dans mon fichier text mais il le met que dans un seul block..
merci de votre aide.