Page 1 sur 1

Suppression ligne vide dans fichier texte

Posté : 21 mai 2012, 10:37
par ladinho58
Bonjour,

j'aurai besoin de vous concernant l'amélioration d'une fonction qui lit la dernière ligne d'un fichier texte.
Tout d'abord, voici la fonction qui lit la dernière ligne de mon fichier :
function readLastLine ($file)
{
	$fp = @fopen($file, "r" );
	$pos = -1;
	$t = " ";
	
	while ($t != "\n" )
	{
		if (!fseek($fp, $pos, SEEK_END))// fseek returns 0 if successfull, and -1 if it has no succes as in seeking a byte outside the file's range
		{ 
			$t = fgetc($fp);
			$pos = $pos - 1;
		}
		else
		{ 
			rewind($fp); 
			break; 
		} 
	}
	$t = fgets($fp);
	fclose($fp);
	return $t;
}
Sauf que cette fonction me retourne une chaîne vide si la derniere ligne de mon fichier est une ligne vide.
Mon problème est donc le suivant :
-comment dire : si ce que ma fonction me retourne est une chaîne vide, tu supprimes la ligne et tu recommences ton travail tant que ta chaîne n'est pas vide ?

Merci d'avance

Re: Suppression ligne vide dans fichier texte

Posté : 21 mai 2012, 11:42
par moogli
salut,

utilise file et boucle a l'envers sur le tableau ;)

@+

Re: Suppression ligne vide dans fichier texte

Posté : 13 avr. 2016, 14:47
par Sankokai
Si le fichier est très volumineux, la fonction file() n'est peut-être pas la plus appropriée:

Ajout d'une variable $line:

function readLastLine($file)
{
$fp = fopen($file, "r");
$pos = -1;
$t = " ";
$line = '';
while (($t != "\n") || (trim($line) == '')) {
if (!fseek($fp, $pos, SEEK_END)) {
// *** - fseek returns 0 if successfull, and -1 if it has no succes as in seeking a byte outside the file's range
$t = fgetc($fp);
$pos = $pos - 1;
} else {
rewind($fp);
break;
}
$line = fgets($fp);
}
fclose($fp);
return $line;
}

Re: Suppression ligne vide dans fichier texte

Posté : 13 avr. 2016, 15:07
par Spols
Tu participe au concours ?