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
Libérer: 2024-12-04 16:07:13
original
479 Les gens l'ont consulté

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;
?>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal