Maison  >  Article  >  développement back-end  >  Pourquoi est-ce que j'obtiens des retours à la ligne lorsque j'écris dans un fichier en PHP ?

Pourquoi est-ce que j'obtiens des retours à la ligne lorsque j'écris dans un fichier en PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-11 12:49:02793parcourir

Why Am I Getting Trailing Newlines When Writing to a File in PHP?

Problèmes de saut de ligne en PHP : surmonter le saut de ligne de fin

Lors de l'écriture dans un fichier en PHP à l'aide de fwrite() avec le mode 'w' , il est courant que des caractères de nouvelle ligne inattendus soient ajoutés à la sortie. C'était le cas dans le code fourni, où 'n' était destiné à créer des sauts de ligne mais apparaissait à la place sous forme de chaîne.

Le dilemme n

La raison derrière ce comportement particulier réside dans la séquence d'échappement utilisée. Par défaut, les chaînes entre guillemets simples traitent « n » comme une barre oblique inverse littérale suivie de la lettre « n », et non comme un caractère de nouvelle ligne. Pour remédier à cela, il est nécessaire d'utiliser des chaînes entre guillemets et d'échapper correctement le caractère de nouvelle ligne en utilisant "n".

Fin de ligne Windows et Unix

Un autre aspect à considérer est le caractère de fin de ligne. Différents systèmes d'exploitation utilisent différentes conventions pour les fins de ligne :

  • Windows : "rn" (retour chariot suivi d'un retour à la ligne)
  • Systèmes basés sur Unix (y compris Linux et macOS) : "n " (nouvelle ligne uniquement)

Pour garantir une bonne gestion des fins de ligne, il est recommandé d'ouvrir le fichier en mode binaire, ce qui permet d'écrire des données brutes sans aucune conversion de fin de ligne. Cela implique d'utiliser 'wb' comme deuxième paramètre pour fopen().

Code mis à jour :

En implémentant ces correctifs, le code modifié ci-dessous écrit avec succès chaque ID de gemme sur une nouvelle ligne sans aucun caractère superflu :

$i = 0;
$file = fopen('ids.txt', 'wb');
foreach ($gemList as $gem)
{
    fwrite($file, $gem->getAttribute('id') . "\n");
    $gemIDs[$i] = $gem->getAttribute('id');
    $i++;
}
fclose($file);

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