Suppression ligne vide dans fichier texte

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Suppression ligne vide dans fichier texte

Re: Suppression ligne vide dans fichier texte

par Spols » 13 avr. 2016, 15:07

Tu participe au concours ?

Re: Suppression ligne vide dans fichier texte

par Sankokai » 13 avr. 2016, 14:47

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

par moogli » 21 mai 2012, 11:42

salut,

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

@+

Suppression ligne vide dans fichier texte

par ladinho58 » 21 mai 2012, 10:37

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