Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2665 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Supprimer les dernières lignes d'un fichier.

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Supprimer les dernières lignes d'un fichier.

n°1515745
lokid
Posté le 16-02-2007 à 19:13:48  profilanswer
 

Bonjour,
Je cherche à supprimer les dernières lignes d'un fichier à partir de la ligne 100.
J'arrive à mettre mon fichier dans un tableau avec file('fichier.txt'), mais après je ne vois pas d'autres solutions que de supprimer le fichier avec Unlink.
Mais cette solution ne me convient pas, car c'est pour purger les posts d'un petit tchat'.
Merci d'avance ;)

mood
Publicité
Posté le 16-02-2007 à 19:13:48  profilanswer
 

n°1515827
Alisteroid
Posté le 16-02-2007 à 22:56:00  profilanswer
 

Je suis pas tres fort en traitement de fichiers avec php, mais la solution la plus simple pourmoi est de lire le contenu, et de reecrire ce dont tu as besoin uniquement dans unnouveau fichier et de supprimer l'ancien fichier.
Il y a surement une solution plus simple...

n°1515861
Protohd
Posté le 17-02-2007 à 01:28:01  profilanswer
 

Bonsoir,  
 
Voici comment il est possible de voir la chose.
 

Code :
  1. <?PHP
  2. // Voici la fonction
  3. function lokid_reduire_texte ( $fichier , $nombre_de_ligne_max)
  4. {
  5. // Le fichier converti en un tableau
  6. $mon_tableau = file($fichier);
  7. // Initialisation de la variable $txt
  8. $txt = "";
  9. // Boucle pour ne conserver que les "n" premières ligne(s)
  10. for ($i = 1; $i <= $nombre_de_ligne_max; $i++) {
  11.    $txt .=  $mon_tableau[$i];
  12.    // Pareil que $txt =  $txt.$mon_tableau[$i];
  13. }
  14. // Ouverture du fichier avec effacement du contenu  
  15. $ouvre=fopen($fichier,"w+" );
  16. // Ecriture du fichier  
  17. fwrite($ouvre,$txt);
  18. // Fermeture du fichier
  19. fclose($ouvre);
  20. }
  21. // Mise en pratique de la fonction  
  22. lokid_reduire_texte ( "mon_fichier.txt" , "5" );
  23. // Le premier argument de la fonction est le fichier à modifier
  24. // le second est le nombre de ligne à conserver
  25. ?>


Message édité par Protohd le 17-02-2007 à 01:33:47
n°1515891
sielfried
Posté le 17-02-2007 à 09:46:43  profilanswer
 

file_put_contents(
  $file_path,  
  array_slice(file($file_path), 0, $line_count)
);
 
(Non testé.)


Message édité par sielfried le 17-02-2007 à 09:47:15

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1516513
lokid
Posté le 19-02-2007 à 16:31:10  profilanswer
 

Merci beaucoup,
J'ai pris la solution de Protohd. Pour le code de sielfried, c'est une bonne idée le array_slice (je ne connaissais pas), mais je crois qu'il manque qqchose pour intégrer le tableau.

n°1516516
sielfried
Posté le 19-02-2007 à 16:41:40  profilanswer
 

Euh non, a priori il ne manque rien.
 
file() renvoit un tableau déjà. :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1516856
lokid
Posté le 20-02-2007 à 11:23:19  profilanswer
 

Ouep, mais bizarrement ca m'écrit juste un "Array" dans le fichier texte. Il faut que je passe par une boucle pour que chaque ligne s'inscrive.

n°1517070
sielfried
Posté le 20-02-2007 à 15:10:24  profilanswer
 

file_put_contents peut prendre un tableau de lignes en second paramètre, peut-être pas depuis la dernière version de PHP par contre même si la doc ne dit rien à ce sujet.
 
Sinon à remplacer par :
file_put_contents(  
  $file_path,  
  array_slice(
    implode('', file($file_path)),  
    0,  
    $line_count
  )  
);


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1517985
Protohd
Posté le 21-02-2007 à 21:10:33  profilanswer
 

La méthode de Sielfried est vraiment beaucoup mieux.
 

Code :
  1. <?PHP
  2. // Voici la fonction
  3. function lokid_reduire_texte ( $fichier , $nombre_de_ligne_max)
  4. {
  5. // Le fichier converti en un tableau
  6. $mon_tableau = file($fichier);
  7. // Mauvaise méthode
  8. /*
  9. // Initialisation de la variable $txt
  10. $txt = "";
  11. // Boucle pour ne conserver que les "n" premières ligne(s)
  12. for ($i = 1; $i <= $nombre_de_ligne_max; $i++) {
  13.    $txt .=  $mon_tableau[$i];
  14.    // Pareil que $txt =  $txt.$mon_tableau[$i];
  15. }
  16. */
  17. // Bonne méthode de sielfried, qui est beaucoup beaucoup plus séduisante
  18. $mon_tableau = array_slice ($mon_tableau,0,$nombre_de_ligne_max);
  19. $txt = implode ("",$mon_tableau);
  20. // Ouverture du fichier avec effacement du contenu  
  21. $ouvre=fopen($fichier,"w+" );
  22. // Ecriture du fichier  
  23. fwrite($ouvre,$txt);
  24. // Fermeture du fichier
  25. fclose($ouvre);
  26. }
  27. // Mise en pratique de la fonction  
  28. lokid_reduire_texte ( "mon_fichier.txt" , "5" );
  29. ?>


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Supprimer les dernières lignes d'un fichier.

 

Sujets relatifs
.[VBS] supprimer les 2 premiere ligne d'un fichier
éxécuter un fichier php à partir d'un autre (avec get)[c/c++] lire des lignes en boucle jusqu'a EOF
supprimer fichiers avec "extensions incrémentées"[OLE]Creation de fichier OOo
[JAVA] Charger un fichier texte en mémoire dans un String[PHP] Placer un fichier sur le poste client
Plus de sujets relatifs à : Supprimer les dernières lignes d'un fichier.


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR