problème pour travailler sur des fichiers textes en PHP

problème pour travailler sur des fichiers textes en PHP - PHP - Programmation

Marsh Posté le 18-06-2011 à 19:46:58    

Salut,
je voudrais travailler sur des fichiers textes en PHP mais ça démarre mal  :whistle:  
déjà je ne sais pas s'il existe une autre méthode mais moi pour scanner toutes les lignes je voudrais tester chaque ligne jusqu'à tant que la dernière soit égale à ma condition (il faut donc que je connaisse à l'avance la dernière ligne de texte, bizarre comme méthode mais pas grave celle-ci dans mon cas est toujours la même).
le problème c'est que la condition n'est jamais remplie et le script tourne dans le vide.
 
Bon je vous mets un petit exemple ça sera plus clair ...
 
fichier texte :

Code :
  1. coucou
  2. c'est
  3. juste
  4. un
  5. petit
  6. test


 
script php :

Code :
  1. <?php
  2. $monfichier = fopen('test.txt', 'r');
  3. $scanligne = ' ';
  4. $inc = 0;
  5. while($scanligne != 'test'){
  6. $inc++;
  7. $scanligne = fgets($monfichier);
  8. }
  9. echo ' nbr de ligne = ' . $inc .' ';
  10. fclose($monfichier);
  11. ?>

Reply

Marsh Posté le 18-06-2011 à 19:46:58   

Reply

Marsh Posté le 19-06-2011 à 20:47:35    

Certainement les retours de lignes qui sont ton souci.
Utilise un trim sur $scanligne.
 
Tu devrais néanmoins tester également que $scanligne ne vaut pas false (ce qui indique qu'il n'y a plus rien à lire), pour éviter que ta boucle ne tourne indéfiniment.
D'ailleurs un file sur ton fichier aurait été pour ma part plus adéquat.
 

Reply

Marsh Posté le 19-06-2011 à 21:09:35    

Merci de ton aide !
je me suis également servi d'un petit tuto, si ça peut servir : http://www.phpsources.org/tutoriel-fichiers.htm
j'arrive enfin à scanner le fichier texte jusque la dernière ligne.
mais maintenant j'ai un autre problème je n'arrive pas à écrire dans un autre fichier.
voici où j'en suis :
 
fichier texte :

Code :
  1. coucou
  2. c'est
  3. juste
  4. un
  5. petit
  6. test


 
script PHP :

Code :
  1. <?php
  2. $monfichier1 = fopen('test.txt', 'r');
  3. $monfichier2 = fopen('test2.txt', 'w');
  4. $inc = 0;
  5. $tab = file('test.txt');
  6. $nb = count($tab);
  7. while($inc < $nb){
  8. $scanligne = $tab[$inc];
  9. $inc++;
  10. if($scanligne == 'petit'){
  11. fputs($monfichier2, 'hello');
  12. }
  13. }
  14. fclose($monfichier1);
  15. fclose($monfichier2);
  16. ?>


Message édité par joyk le 19-06-2011 à 21:12:40
Reply

Marsh Posté le 19-06-2011 à 21:30:16    

Pas d'erreur retournée ?
Utilise foreach() qui est justement fait pour la lecture d'array.
 

Code :
  1. <?php
  2. $monfichier2 = fopen('test2.txt', 'w');
  3. $tab = file('test.txt');
  4. foreach( $tab as $line )
  5. {
  6.    if( trim($line) == 'petit' )
  7.    {
  8.       fputs($monfichier2, 'hello');
  9.       break;
  10.    }
  11. }
  12. ?>

Reply

Marsh Posté le 20-06-2011 à 00:02:48    

youhou ça fonctionne ! merci beaucoup pour ton aide :-)
par contre j'ai de nouveau un petit souci sur lequel je bloque.
imagine que dans le fichier texte il y as plusieurs ligne "petit", comment je peux faire pour que le mot "hello" soit écrit sur une nouvelle ligne à chaque fois ? la pour le moment les mots "hello" sont collés les uns aux autres sur la première ligne. J'ai essayé avec "\n" à la fin mais ça ne fonctionne pas. Tu as une idée ?

Reply

Marsh Posté le 20-06-2011 à 15:04:23    

\n ne marche pas dans les single quotes ', mais dans les double quotes "

Reply

Marsh Posté le 20-06-2011 à 16:10:41    

j'ai trouvé en fait c'est juste le bloc-note qui n'affiche pas les retours à la ligne ... voilà comment on perd des heures pour rien :\\
Personne a une astuce pour que l'affichage soit bon dans le bloc-note ?

Reply

Marsh Posté le 20-06-2011 à 16:25:55    

il faut mettre \r\n

Reply

Marsh Posté le 20-06-2011 à 16:57:29    

Utilise

Code :
  1. file('monfichier.txt');

pour la lecture, au lieu de t'emmerder avec tout ton bordel :o


Message édité par Dj YeLL le 20-06-2011 à 16:57:46

---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 20-06-2011 à 16:58:04    

c'est bon ça marche, merci !
je touche presque au but de ce que je désire faire, mais maintenant j'ai le problème inverses  :D  
je dois mettre des points virgules ";" à la fin de mes phrases mais ceux ci passent à la ligne sans que j'en fasse la demande ...
tu sais pourquoi ?
 
exp :  
 

Code :
  1. fputs($variable1, "montexte $variable2;\r\n" );


 
et ça donne dans le fichier texte :
 

Code :
  1. montexte texte de la variable2
  2. ;


Reply

Marsh Posté le 20-06-2011 à 16:58:04   

Reply

Marsh Posté le 20-06-2011 à 16:59:40    

Il y a probablement un retour à la ligne dans $variable2

Reply

Marsh Posté le 20-06-2011 à 17:07:40    

hehe trop fort, merci encore :-)
je croyais que c'était une histoire d'antislash ou je ne sais quoi.


Message édité par joyk le 20-06-2011 à 17:38:11
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed