lecture fichier txt

donatello
Invité n'ayant pas de compte PHPfrance

27 sept. 2005, 15:31

Bonjour,
je souhaite créer un script php qui récupère et exploite des données qui sont dans un fichier texte.
les données de chaque enregistrement sont séparées par des espaces vides, comme ceci
Enregistrement1 Donnée1 Donnée2 Donnée3
Enregistrement2 Donnée1 Donnée2 Donnée3
Enregistrement3 Donnée1 Donnée2 Donnée3
2 questions:
1- php peut-il lire le fichier texte sans pb?
2- l'espacement entre les colonnes doit-il absolument être régulier ou est-ce qu'on peut avoir un des espacements irréguliers entre chaque colonne, comme ceci
Enregistrement1 Donnée1 Donnée2 Donnée3
Enregistrement2 Donnée1 Donnée2 Donnée3
Enregistrement3 Donnée1 Donnée2 Donnée3

Invité
Invité n'ayant pas de compte PHPfrance

27 sept. 2005, 15:34

bon, dans mon deuxième exemple, les colonnes n'aparaissent pas comme je voulais. Voici le 2ème exemple avec des colonnées espacées:

Enregistrement1 Donnée1 Donnée2 Donnée3
Enregistrement2 Donnée1 Donnée2 Donnée3
Enregistrement3 Donnée1 Donnée2 Donnée3

Invité
Invité n'ayant pas de compte PHPfrance

27 sept. 2005, 15:34

bon, ça marche pas, j'espère que vous avez compris ce que je voulais dire!

Mammouth du PHP | 568 Messages

27 sept. 2005, 15:37

1 - Il faudrait regarder le système de fichier
2 - Bin c'est mieux si c'est régulier... Tu peux faire un explode ensuite plus facilement
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Invité
Invité n'ayant pas de compte PHPfrance

27 sept. 2005, 15:40

dans mon fichier, les espaces ne sont pas réguliers. qu'est ce qui se passe dans ce cas? ça pose un pb?

Mammouth du PHP | 568 Messages

27 sept. 2005, 15:42

Quand tu dis, pas régulier, c'est du genre :
aaa aaaaaaa aaa aaa aaaaa
a aaaa aaaaaa aa aaaa aaaaa
ou
aaa aaaaa aaaaa aaaaa
aaaaabbbaaaaabbbbaaaaba
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Invité
Invité n'ayant pas de compte PHPfrance

27 sept. 2005, 15:46

exact, c'est tout à fait comme ça.

Invité
Invité n'ayant pas de compte PHPfrance

27 sept. 2005, 15:47

hue, je veux dire plutôt comme ton 2ème exemple

Mammouth du PHP | 568 Messages

27 sept. 2005, 15:52

Bin le 1er cas est mieux, car tu peux utiliser la fonction explode sur la ligne et récupérer morceau par morceau, mais cela implique d'avoir un séparateur unique (un espace, un /, etc...)

Mais tu peux toujours parcourir ta ligne et récupérer mot à mot en zappant les espaces, c'est juste un peu plus long...
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Invité
Invité n'ayant pas de compte PHPfrance

27 sept. 2005, 15:58

serait-il possible que g t'envoie le fichier texte pour que tu me dises quelle est la meilleure solution?

Mammouth du PHP | 568 Messages

27 sept. 2005, 16:00

Affiche quelques lignes... J'ai ausi un travail pour lequel je perd un peu de temps pour venir ici :) Je peuxpas non plus faire une aide trop poussé ;) Mais je peux te guider...
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Invité
Invité n'ayant pas de compte PHPfrance

27 sept. 2005, 16:15

ok, je comprends je veux juste savoir si mon fichier est exploitable. Le problème, c'est que le forum enlève les espaces inutiles dans le texte que je colle, ce qui fait que tu ne verras pas l'aspect réel du fichier. c'est pour ça que je propose de te l'envoyer

Mammouth du PHP | 568 Messages

27 sept. 2005, 16:20

fais comme j'ai fais ;) mais des 0 à la place des espaces et colorie en blanc :wink:
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Invité
Invité n'ayant pas de compte PHPfrance

27 sept. 2005, 16:26

bon, laisse tomber c pas grave. les lignes sont trop longues et je vais mettre des heures à colorier les espaces. en plus le forum fait des retours à la ligne quand c'est trop long. merci quand même pour les infos.

Mammouth du PHP | 568 Messages

27 sept. 2005, 16:37

Bon, quoi q'il en soit, je conseil de parcourir ton fichier ligne par ligne (tu trouveras comment faire dans la doc php sur le système de fichier)

Et, pour chaque ligne, tu fais un une boucle while cherchant le 1er espace (strpos)...
Lorsqu'il te trouve un espace, tu fais substr de la position 0 à la position détecter par strpos-1 => Ca te donne ton 1er mot. Ensuite, tu fais un ltrim (pour supprimer les espace à gauche.

donc il recherche ensuite le prochain espace et ainsi de suite, tu pourras découper mot à mot ta ligne...
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007