Maison développement back-end Problème PHP PHP ne lit pas la première ligne de données txt

PHP ne lit pas la première ligne de données txt

May 07, 2023 pm 02:11 PM

Dans le développement PHP, la lecture de fichiers est une opération très courante. Cependant, nous rencontrons parfois une telle situation : bien que le fichier existe, lors de la lecture du fichier, nous constatons que la première ligne de données n'a pas été lue. Ce type de problème rend souvent les développeurs très confus et angoissés. Cet article aidera les développeurs à bien comprendre ce problème et à le résoudre en douceur en analysant la cause et la solution du problème.

1. Contexte du problème

En PHP, il existe de nombreuses façons de lire des fichiers. Les plus courantes consistent à utiliser la fonction file_get_contents() et la fonction fopen() pour lire des fichiers. Nous stockons généralement les informations du fichier à lire dans un tableau afin que les informations du fichier puissent être appelées à tout moment. Ce qui suit est un code PHP courant pour lire des fichiers :

<?php
$file = 'test.txt';
$content = file_get_contents($file);
$lines = explode("\n", $content);
?>
Copier après la connexion

Dans le code ci-dessus, nous définissons d'abord une variable $file pour stocker le nom du fichier à lire, puis utilisons la fonction file_get_contents() pour lire le fichier et stocker le contenu du fichier Stockez-le dans la variable $content, puis utilisez la fonction éclater() pour diviser la chaîne dans la variable $content en utilisant le délimiteur "n" comme condition pour générer un tableau $lines pour stocker chaque ligne de données dans le déposer.

Cependant, lorsque nous lisons un fichier, nous constatons parfois des phénomènes étranges, tels que seule la deuxième ligne du fichier et les données suivantes sont lues, mais la première ligne de données ne peut pas être lue avec succès.

2. Analyse du problème

La raison habituelle de ce problème est que lorsque le système d'exploitation lit un fichier texte, il ajoute par défaut une marque BOM (Byte Order Mark) au début du fichier. La marque consiste à indiquer au système d'exploitation de lire quel mode endian utiliser lors de la récupération des fichiers. Pour certains anciens systèmes d'exploitation ou certains logiciels non adaptés à l'encodage UTF-8, il est difficile de traiter des fichiers texte contenant des balises BOM. À l'heure actuelle, si nous utilisons des fonctions de lecture de fichiers telles que la fonction file_get_contents() ou la fonction fopen() de PHP pour lire ces fichiers avec des balises BOM, la première ligne de données ne sera pas lue.

3. Solution

Pour résoudre ce problème, nous pouvons adopter les solutions suivantes :

  1. Supprimer la marque de nomenclature

Nous pouvons utiliser un éditeur ou certains outils de traitement de texte pour ouvrir le fichier texte à lire, puis supprimer la marque BOM dans l'en-tête du fichier, enregistrez le fichier et téléchargez-le sur le serveur. Cela garantira que le fichier PHP ne sera plus affecté par la marque BOM lors de sa lecture.

  1. Utilisez une méthode de lecture spéciale

Si nous sommes sûrs que le fichier à lire porte une marque de nomenclature, nous pouvons utiliser une méthode de lecture spéciale pour lire le fichier de test. Plus précisément, nous pouvons utiliser certaines bibliothèques PHP tierces, telles que la fonction fread() pour lire le fichier texte, puis utiliser la fonction substr() pour supprimer le premier caractère (c'est-à-dire la marque BOM) de la chaîne lue, et. traitez enfin la chaîne dans un tableau. Ce qui suit est un morceau de code PHP qui traite les balises BOM :

<?php
$file = fopen("test.txt", "r");
$fcontents = fread($file, filesize("test.txt"));
fclose($file);

if(substr($fcontents, 0, 3) == pack("CCC",0xef,0xbb,0xbf)) {
  $fcontents = substr($fcontents, 3);
}

$lines = explode("\n", $fcontents);
?>
Copier après la connexion

Dans le code ci-dessus, nous utilisons la fonction fopen() pour ouvrir le fichier à lire, puis utilisons la fonction fread() pour lire le contenu du dossier entier. Ensuite, nous utilisons la fonction substr() pour vérifier si l'en-tête du fichier a une balise BOM. Si c'est le cas, utilisez la fonction substr() pour supprimer le premier caractère (c'est-à-dire la balise BOM) de $fcontents, et enfin utilisez la fonction substr(). Fonction éclater() pour La chaîne est divisée en un tableau $lines en fonction des lignes pour terminer l'opération de lecture du fichier texte.

  1. Convertir l'encodage du fichier au format UTF-8

Si nous ne pouvons pas supprimer la marque BOM dans les deux cas, nous pouvons envisager de convertir le format d'encodage du fichier source au format UTF-8 afin que lors de la lecture du fichier De cette façon, vous pouvez éviter l'impact de la marque BOM. Nous pouvons utiliser la conversion de symboles explicite du système Windows ou des outils tels que notepad++ pour convertir le fichier en codage UTF-8.

4. Résumé

Ce qui précède est une analyse détaillée des raisons et des solutions au problème selon lequel la première ligne de données ne peut pas être lue lorsque PHP lit un fichier. D'une manière générale, ce type de problème n'est pas difficile à résoudre. Il suffit de comprendre la cause du problème et d'adopter des solutions appropriées pour réussir à éviter l'impact de ce problème sur le programme.

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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser les tâches asynchrones en PHP pour les opérations non bloquantes? Comment utiliser les tâches asynchrones en PHP pour les opérations non bloquantes? Mar 10, 2025 pm 04:21 PM

Cet article explore l'exécution des tâches asynchrones en PHP pour améliorer la réactivité des applications Web. Il détaille des méthodes comme les files d'attente de messages, les cadres asynchrones (Reactphp, Swoole) et les processus de fond, mettant l'accent sur les meilleures pratiques pour Efficien

Comment implémenter les files d'attente de messages (Rabbitmq, Redis) dans PHP? Comment implémenter les files d'attente de messages (Rabbitmq, Redis) dans PHP? Mar 10, 2025 pm 06:15 PM

Cet article détaille la mise en œuvre des files d'attente de messages en PHP à l'aide de RabbitMQ et Redis. Il compare leurs architectures (AMQP vs en mémoire), les fonctionnalités et les mécanismes de fiabilité (confirmations, transactions, persistance). Meilleures pratiques de conception, erreur

Quelles sont les dernières normes de codage PHP et les meilleures pratiques? Quelles sont les dernières normes de codage PHP et les meilleures pratiques? Mar 10, 2025 pm 06:16 PM

Cet article examine les normes de codage PHP actuelles et les meilleures pratiques, en se concentrant sur les recommandations PSR (PSR-1, PSR-2, PSR-4, PSR-12). Il met l'accent

Comment utiliser la réflexion pour analyser et manipuler le code PHP? Comment utiliser la réflexion pour analyser et manipuler le code PHP? Mar 10, 2025 pm 06:12 PM

Cet article explique l'API de réflexion de PHP, permettant l'inspection d'exécution et la manipulation des classes, des méthodes et des propriétés. Il détaille les cas d'utilisation courants (génération de documentation, ORMS, injection de dépendance) et prévient contre la performance Overhea

Comment puis-je travailler avec les extensions de PHP et PECL? Comment puis-je travailler avec les extensions de PHP et PECL? Mar 10, 2025 pm 06:12 PM

Cet article détaille l'installation et le dépannage des extensions de PHP, en se concentrant sur PECL. Il couvre les étapes d'installation (trouver, télécharger / compilation, activer, redémarrer le serveur), dépannage des techniques (vérification des journaux, vérification de l'installation,

PHP 8 JIT (juste à temps) Compilation: comment cela améliore les performances. PHP 8 JIT (juste à temps) Compilation: comment cela améliore les performances. Mar 25, 2025 am 10:37 AM

La compilation JIT de PHP 8 améliore les performances en compilant le code fréquemment exécuté en code machine, bénéficiant aux applications avec des calculs lourds et en réduisant les temps d'exécution.

Comment utiliser les techniques d'optimisation de la mémoire dans PHP? Comment utiliser les techniques d'optimisation de la mémoire dans PHP? Mar 10, 2025 pm 04:23 PM

Cet article aborde l'optimisation de la mémoire PHP. Il détaille des techniques comme l'utilisation de structures de données appropriées, d'éviter la création d'objets inutile et d'utiliser des algorithmes efficaces. Sources de fuite de mémoire communes (par exemple, connexions non clôturées, V global

Comment rester à jour avec l'écosystème et la communauté PHP? Comment rester à jour avec l'écosystème et la communauté PHP? Mar 10, 2025 pm 06:16 PM

Cet article explore les stratégies pour rester à jour dans l'écosystème PHP. Il met l'accent sur l'utilisation des canaux officiels, des forums communautaires, des conférences et des contributions open source. L'auteur met en évidence les meilleures ressources pour apprendre de nouvelles fonctionnalités et un

See all articles