par
Louisss » 05 févr. 2008, 16:42
Bonjour.
Je suis en train d'étudier en détail la question du traitement des fichiers en PHP et après avoir lu les pages de documentation sur les fonctions fgets() et feof(), je me pose quelques questions :
1) Dans la doc sur fgets(), on trouve : fgets() retourne la chaîne lue jusqu'à la longueur length - 1 octet depuis le pointeur de fichier handle , ou bien
la fin du fichier, ou une nouvelle ligne (qui inclut la valeur retournée), ou encore
un EOF (celui qui arrive en premier).
D'où ma première question : à quoi bon utiliser feof() pour savoir si on atteint la fin du fichier avec fgets() ? Exemple typique :
Code : Tout sélectionner
while (!feof($f)) // on parcours le fichier
{
$ligne = fgets($f); // lecture d'une ligne
echo trim($ligne); // traitement de la ligne
}
2) D'autre part, beaucoup de contributions évoquent un problème avec feof() qui ne retournerait pas false au moment ou il détecte la fin du fichier, mais au test suivant, ce qui fait qu'on effectue 2 fois le dernier traitement. J'ai essayé avec le code suivant et je ne constate pas ce problème, pourquoi ?
Code : Tout sélectionner
while (!feof($f)) // On parcours le fichier
{
$ligne = fgets($f); // Lecture d'une ligne
echo trim($ligne)."<br />"; // écriture de la ligne lue
echo "X<br />"; // écriture d'un caractère quelconque qui devrait apparaitre une fois de trop d'après ce que j'ai compris.
}
fclose($f);
Merci d'avance
Bonjour.
Je suis en train d'étudier en détail la question du traitement des fichiers en PHP et après avoir lu les pages de documentation sur les fonctions fgets() et feof(), je me pose quelques questions :
1) Dans la doc sur fgets(), on trouve : fgets() retourne la chaîne lue jusqu'à la longueur length - 1 octet depuis le pointeur de fichier handle , ou bien [b]la fin du fichier[/b], ou une nouvelle ligne (qui inclut la valeur retournée), ou encore [b]un EOF[/b] (celui qui arrive en premier).
D'où ma première question : à quoi bon utiliser feof() pour savoir si on atteint la fin du fichier avec fgets() ? Exemple typique :
[code]
while (!feof($f)) // on parcours le fichier
{
$ligne = fgets($f); // lecture d'une ligne
echo trim($ligne); // traitement de la ligne
}
[/code]
2) D'autre part, beaucoup de contributions évoquent un problème avec feof() qui ne retournerait pas false au moment ou il détecte la fin du fichier, mais au test suivant, ce qui fait qu'on effectue 2 fois le dernier traitement. J'ai essayé avec le code suivant et je ne constate pas ce problème, pourquoi ?
[code]
while (!feof($f)) // On parcours le fichier
{
$ligne = fgets($f); // Lecture d'une ligne
echo trim($ligne)."<br />"; // écriture de la ligne lue
echo "X<br />"; // écriture d'un caractère quelconque qui devrait apparaitre une fois de trop d'après ce que j'ai compris.
}
fclose($f);
[/code]
Merci d'avance