Page 1 sur 1

récuperer et classer les lignes d'un fichier

Posté : 13 févr. 2006, 16:46
par HD
salut
en codant un script qui récupère et classe quelques lignes d'un fichier, j'ai écrit ceci :
<?php
// objectif : récupérer les N dernières news de la plus récente à la plus ancienne
$n = 2 ;
$ligne = 0 ;
$Fichier = "" ;

if (!$fp = fopen("touteslesnews.htm","r")) {
echo "Pas de news pour le moment !";
exit;
}
else {
	while($n > $ligne) {
		$Ligne = fgets($fp,255); 
		echo $Ligne;		
		$Fichier .= $Ligne;	
		$ligne = $ligne + 1 ;
	}
	fclose($fp);
}



//reste à classer par date
// et à afficher
?>
le problème c'est que ce script récupère les N premières lignes du fichier alors que je vise les N dernières lignes :?: :!:
merci pour votre aide

Posté : 13 févr. 2006, 17:56
par zigz4g
Salut,

Tu devrais pouvoir faire ce que tu veux avec fseek.
Pour des details c'est ici : http://fr2.php.net/manual/fr/function.fseek.php.

Explication rapide par rapport a ce que tu veux faire :
Tu deplace ton pointeur de fichier a la fin et tu le deplace de en remontant.
L'inconvenient, c'est de bien gerer le retour en arriere. Je te conseils la doc qui te parle aussi de ftell().

A priori tu n'as que peux de modifs a faire sur ton script pour obtenir la lecture par la fin. En meme temps dans la doc, ils disent que fseek ne peut pas position son pointeur a la fin sur des pointeurs retournes par fopen() au format HTTP ou FTP.

Posté : 13 févr. 2006, 19:03
par HD
merci pour ta réponse
fseek() ne peut pas être utilisé sur les pointeurs retournés par fopen() s'ils sont au format HTTP ou FTP
je n'ai pas très bien compri mais en tous cas je crois ce que le code dont j'ai besoin ressemble à :
<?php
function readlastline($file)
{
       $linecontent = " ";
       $contents = file($file);
       $linenumber = sizeof($contents)-1;
       $linecontet = $contents[$linenumber];
       unset($contents,$linenumber);
       return $linecontent;
}
?> 
:?:
(trouvé dans ton lien)