Lire un fichier a l'envers

Lire un fichier a l'envers - PHP - Programmation

Marsh Posté le 21-04-2007 à 14:00:12    

:hello:

 

Dans le cadre de mon projet je dois lire un fichier a l'envers (sic).

 

Seulement a part faire un code moisi du genre :

 
Citation :


$fichier='fichier.txt';
$offsetLecture=filesize($fichier)-1;
$ouvFichier=fopen($fichier,'r');
while($offsetLecture!=0) {
rewind($ouvFichier);
fseek($ouvFichier,$offsetLecture);
$octetLu=fread($ouvFichier,1);
$offsetLecture--;
}

 

Je ne vois pas de solutions :/

 

Y'aurait-il un moyen (plus) simple de lire un fichier a l'envers ? Merci :jap:

 

EDIT : Pour compléter la question j'expose mon problème réel :

 

Je fais un convertisseur de sauvegardes, je me retrouve avec un fichier de 262,144 octets dont 95% du fichier est du vide (FF FF FF FF FF ...). Or pour convertir ce fichier en un autre format, je me dois de faire péter ce vide. Si je lis le fichier du début a la fin et que je vérifie la présence de FF, je risque d'avoir un fichier corrompu car la sauvegarde peut contenir d'elle même un FF hors du vide qui sert a compléter le fichier. La meilleur solution a mes yeux est donc de lire le fichier de la fin au début, et si un caractère diffère de FF, je prends la position du caractère et je tronque le fichier du début a la position de ce caractère qui serait donc le dernier octet avant le remplissage par vide

 

Je ne sais pas si vous avez compris mais spagrave :D


Message édité par WiiDS le 21-04-2007 à 14:44:07
Reply

Marsh Posté le 21-04-2007 à 14:00:12   

Reply

Marsh Posté le 21-04-2007 à 18:56:13    

Plop :o

Reply

Marsh Posté le 21-04-2007 à 20:17:37    

Code :
  1. <?php
  2.     $in = file_get_contents('lorem.txt');
  3.     echo strrev($in);
  4. ?>


 
:??:


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 21-04-2007 à 21:17:05    

Non bah non t as deja parcouru le fichier de haut en bas la.

 

Edit: En meme c une question typique d'un abruti de prof. Donc ca merite meme pas d'y passer plus de 2 sec.

Message cité 1 fois
Message édité par supermofo le 21-04-2007 à 21:18:26
Reply

Marsh Posté le 21-04-2007 à 22:04:53    

supermofo a écrit :

Edit: En meme c une question typique d'un abruti de prof. Donc ca merite meme pas d'y passer plus de 2 sec.


Pardon ? :heink:  
 
Ce n'est pas une attaque "d'abruti de prof" comme tu dirais mais simplement j'en ai besoin afin d'achever mon projet parce que OUI le langage de programmation php ne se limite pas a mambo ! :sarcastic:  
 
Si t'es pas content, casse toi. :pfff:

Reply

Marsh Posté le 21-04-2007 à 23:34:21    

Shinuza a écrit :

Code :
  1. <?php
  2.     $in = file_get_contents('lorem.txt');
  3.     echo strrev($in);
  4. ?>


 
:??:


Merci beaucoup, exactement la commande que je recherchais :love:

Reply

Marsh Posté le 22-04-2007 à 21:24:05    

WiiDS a écrit :

Pardon ?  :heink:  

 

Ce n'est pas une attaque "d'abruti de prof" comme tu dirais mais simplement j'en ai besoin afin d'achever mon projet parce que OUI le langage de programmation php ne se limite pas a mambo !  :sarcastic:  

 

Si t'es pas content, casse toi.  :pfff:

 

 

Mambo est une tres belle application. Puis je maintient mes propos, et je sors.

Reply

Marsh Posté le 22-04-2007 à 22:30:56    

si ton fichier est un texte, tu peux le splitter avec le retour chariot ...
 

Code :
  1. $fichier='fichier.txt';
  2. $array_file_content = array();
  3. $file_content = '';
  4. // le fichier
  5. $handle = @fopen("/tmp/inputfile.txt", "r" );
  6. // lecture & copie dans une variable
  7. if ($handle) {
  8.    while (!feof($handle)) {
  9.       $file_content .= fgets($handle, 4096);
  10.    }
  11.    fclose($handle);
  12. }
  13. // explosion en tableau
  14. $array_file_content = explode("\n",$file_content);
  15. // lecture du tableau à l'envers
  16. $nb_lines = count($array_file_content); // nombre de lignes
  17. for ($ptr = $nb_lines; $ptr >=0; $ptr--)
  18. {
  19.   echo $array_file_content[$ptr];
  20. }
  21. ?>


 
NB : tu peux être amené à remplacer \n par \r\n selon ton système (je crois que les mac font un retour chariot en \r\n). Et cette méthode peut être pratique si tu as un fichier pas trop long, et que tu ne l'exécutes pas en boucle 500 mille fois de suite^^

Reply

Marsh Posté le 23-04-2007 à 20:38:52    

Merci mais je vais rester sur strrev plus rapide :D

Reply

Sujets relatifs:

Leave a Replay

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