Téléchargement
illégal
Posez votre question Signaler

[PHP] Lire un fichier txt par la fin [Résolu]

afrodje 897Messages postés 7 février 2008Date d'inscription 23 avril 2012Dernière intervention - Dernière réponse le 22 oct. 2011 à 17:03
Bonjour,
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
Lire la suite 

[PHP] Lire un fichier txt par la fin »

7 réponses
Réponse
+2
moins plus
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,
Ajouter un commentaire
Réponse
+0
moins plus
Hello,
as-tu essayé l'option 'a' ?
http://pwet.fr/man/linux/fonctions_bibliotheques/fopen
Bon courage
Ajouter un commentaire
Réponse
+0
moins plus
Cela ne fonctionne pas, quand j'utilise "a", aucun affichage.
Ajouter un commentaire
Réponse
+0
moins plus
je ne n'y connais pas dans de domaine jamais encore exploré. J'espère que quelqu'un d'autre pourra t'aider.
Ajouter un commentaire
Réponse
+0
moins plus
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,
anzoom - 22 oct. 2011 à 17:03
bonjour,
mon soucis est de savoir comment rechercher une chaine de caractères de la dernière ligne d'un fichier vers sa ligne de début (à savoir du bas vers le haut du fichier) et afficher la toute première ligne qui contient la chaine.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « [PHP] Lire un fichier txt par la fin » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?