[PHP] Lire un fichier txt par la fin
Résolu
afrodje
Messages postés
759
Date d'inscription
Statut
Membre
Dernière intervention
-
anzoom -
anzoom -
Bonjour,
J'arrive à le lire du début vers la fin mais pas l'inverse.
Comment faire l'inverse?
Merci
--
Pensez à mettre en résolu en haut à droite dès que le solution est trouvé !
J'arrive à le lire du début vers la fin mais pas l'inverse.
<?php
$fp = fopen("logs/log.txt","r");
$page = "";
while (!feof($fp))
{
$page .= fgets($fp, 4096);
$page .= "<br>";
}
echo $page;
?>
Comment faire l'inverse?
Merci
--
Pensez à mettre en résolu en haut à droite dès que le solution est trouvé !
Configuration: Windows Vista Firefox 3.0.4
6 réponses
-
Bonsoir,
Si vous souhaitez seulement le lire pour l'afficher en sens inverse :<?php $fp = fopen("logs/log.txt","r"); $page = ""; while (!feof($fp)) { $page = fgets($fp, 4096) . $page; $page .= "<br>"; } echo $page; ?>
Sinon pour le lire en sens inverse voici un script qui est valide et qui affiche les lignes dans le sens inverse :<?php $fp = fopen("monFichier.txt","r"); // ouverture en lecture, le pointeur est au début $taille_caract = sizeof('a'); // on stock la taille d'un caractère fseek($fp, -($taille_caract), SEEK_END); // on place le pointeur avant le dernier caractère $page = ""; $ligne = ""; // ftell retourne la position courante du pointeur while(ftell($fp) > 0){ // tant que le pointeur n'est pas au début $caract = fgetc($fp); // on lit un caractère if($caract != "\n"){ // si le caractère n'est pas une fin de ligne $ligne = $caract.$ligne; // on l'ajoute à la ligne }else{ // si la ligne est finie $page .= $ligne."<br />"; // on l'ajoute à la page $ligne = ""; // et on vide la ligne } fseek($fp, -($taille_caract * 2), SEEK_CUR);// on remonte de 2 caractères : celui que l'on vient de lire et celui que l'on va lire } fclose($fp); echo $page; ?>
Bonne soirée, -
Hello,
as-tu essayé l'option 'a' ?
http://pwet.fr/man/linux/fonctions_bibliotheques/fopen/
Bon courage -
Cela ne fonctionne pas, quand j'utilise "a", aucun affichage.
-
je ne n'y connais pas dans de domaine jamais encore exploré. J'espère que quelqu'un d'autre pourra t'aider.
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
Après réflexion le script que j'ai indiqué est incomplet, il manque la lecture du tout premier caractère, voici le version complète :<?php $fp = fopen("monFichier.txt","r"); // ouverture en lecture, le pointeur est au début $taille_caract = sizeof('a'); // on stock la taille d'un caractère fseek($fp, -($taille_caract), SEEK_END); // on place le pointeur avant le dernier caractère $page = ""; $ligne = ""; // ftell retourne la position courante du pointeur while(ftell($fp) > 0){ // tant que le pointeur n'est pas au début $caract = fgetc($fp); // on lit un caractère if($caract != "\n"){ // si le caractère n'est pas une fin de ligne $ligne = $caract.$ligne; // on l'ajoute à la ligne }else{ // si la ligne est finie $page .= $ligne."<br />"; // on l'ajoute à la page $ligne = ""; // et on vide la ligne } fseek($fp, -($taille_caract * 2), SEEK_CUR);// on remonte de 2 caractères : celui que l'on vient de lire et celui que l'on va lire } // Lecture du tout premier caractère $caract = fgetc($fp); if($caract != "\n"){ $ligne = $caract.$ligne; } $page .= $ligne."<br />"; fclose($fp); echo $page; ?>
Bonne journée, -
Finalement ce code fonctionne :
<?php $fp = fopen("logs/log.txt","r"); $page = ""; while (!feof($fp)) { $page = fgets($fp, 4096) . $page; $page .= "<br>"; } echo $page; ?>
Merci