131 votes

L'écriture d'une nouvelle ligne de fichier en PHP

Mon code:

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

Pour une raison quelconque, il est écrit \n comme une chaîne de caractères, de sorte que le fichier ressemble à ceci:

40119\n40122\n40120\n42155\n36925\n45881\n42145\n45880

À partir de Google avec il me dit d'utiliser \r\n, mais \r est un retour chariot, qui ne semble pas être ce que je veux faire. Je veux juste le fichier ressemble à ceci:

40119
40122
40120
42155
36925
45881
42145
45880

Merci.

321voto

Artefacto Points 50896

Remplacer '\n' avec "\n". La séquence d'échappement n'est pas reconnu lorsque vous utilisez '.

Voir le manuel.

Pour la question de savoir comment écrire les fins de ligne, voir la note ici. Fondamentalement, les différents systèmes d'exploitation disposent de conventions différentes pour les fins de ligne. Windows utilise "\r\n", basé sur unix systèmes d'exploitation, utilisez "\n". Vous devez vous en tenir à une convention (j'avais choisi "\n") et ouvrez votre fichier en mode binaire (fopen devrait être "wb", pas de "w").

78voto

user1649798 Points 148

PHP_EOL est une constante prédéfinie en PHP depuis PHP 4.3.10 et PHP 5.0.2. Voir le manuel de l'affichage:

En utilisant cela vous fera économiser de codage supplémentaire sur la plate-forme de l'évolution.

C'est à dire.

$data = 'some data'.PHP_EOL;
$fp = fopen('somefile', 'a');
fwrite($fp, $data);

Si vous en boucle par deux fois vous pouvez le voir dans 'unfichier':

some data
some data

74voto

Aldarien Points 201

Utiliser PHP_EOL résultats \r\n ou \n selon le système d'exploitation.

46voto

Alix Axel Points 63455

Vous pouvez également utiliser file_put_contents():

file_put_contents('ids.txt', implode("\n", $gemList) . "\n", FILE_APPEND);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X