Maison >développement back-end >tutoriel php >Pourquoi ma boucle PHP `while (!feof())` produit-elle une sortie de fichier incomplète ?

Pourquoi ma boucle PHP `while (!feof())` produit-elle une sortie de fichier incomplète ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-04 16:07:13503parcourir

Why Does My PHP `while (!feof())` Loop Produce Incomplete File Output?

PHP while loop (!feof()) Problème de sortie incomplète

Problème :

Lors de la tentative de lecture et d'affichage le contenu d'un fichier texte utilisant une boucle while PHP (!feof()), toutes les données ne sont pas sorties. La dernière chaîne du fichier est coupée.

Réponse :

La cause première de ce problème réside dans le placement de la vérification EOF. Le code d'origine a vérifié la fin du fichier avant d'afficher la dernière ligne. Cela a entraîné une troncature partielle de la dernière ligne.

Pour résoudre ce problème, la vérification EOF doit être intégrée au processus de lecture. Voici le code corrigé :

<?php
$line_count = 0;

$handle = fopen("item_sets.txt", "r");

if ($handle) {
    while (($buffer = fgets($handle, 4096)) !== false) {
        $trimmed = trim($buffer);
        echo $trimmed;
        $line_count++;
    }
} else {
    echo 'Unexpected error opening file';
}
fclose($handle);

echo PHP_EOL.PHP_EOL.PHP_EOL.'Lines read from file = ' . $line_count;
?>

Considérations supplémentaires :

  • Suppression du symbole @ avant fopen, car il supprime les messages d'erreur et est considéré comme une mauvaise pratique.
  • Ajout de la gestion des erreurs pour les erreurs inattendues d'ouverture de fichiers.
  • Ajout d'un caractère de fin de ligne (EOL) pour séparer la sortie.

En utilisant ce code corrigé, tout le contenu du fichier texte sera lu et affiché avec succès, y compris la dernière ligne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn