Ecrire une nouvelle ligne dans un fichier en PHP (saut de ligne)

109

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 \nsous forme de chaîne, donc le fichier ressemble à ceci:

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

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

40119
40122
40120
42155
36925
45881
42145
45880

Merci.

VIVA LA NWO
la source

Réponses:

278

Remplacez '\n'par "\n". La séquence d'échappement n'est pas reconnue lorsque vous utilisez '.

Consultez le manuel .

Pour savoir comment écrire les fins de ligne, consultez la note ici . Fondamentalement, différents systèmes d'exploitation ont des conventions différentes pour les fins de ligne. Windows utilise "\ r \ n", les systèmes d'exploitation basés sur Unix utilisent "\ n". Vous devriez vous en tenir à une convention (j'avais choisi "\ n") et ouvrir votre fichier en mode binaire ( fopendevrait obtenir "wb", pas "w").

Artefacto
la source
J'ai changé "\ r \ n" en "\ n" pour ma fin de ligne et cela a fonctionné. Merci.
csonuryilmaz
maintenant mon code utilise les deux "et 'et cela me dérange
Mr PizzaGuy
En fait, vous pouvez remarquer que \ n est mis en surbrillance lors de l'utilisation de "" mais pas lors de l'utilisation de "". (Ceci est, si votre éditeur utilise la coloration syntaxique, le mien est Sublime Text 3)
DarkVeneno
68

Utilisez PHP_EOLquelles sorties \r\nou \nselon le système d'exploitation.

Aldarien
la source
4
N'ayez pas d'ennuis, utilisez toujours à \nmoins que vous ne souhaitiez ouvrir le fichier dans un système d'exploitation spécifique - si c'est le cas, utilisez la combinaison de nouvelle ligne de ce système d'exploitation, et non le système d'exploitation sur lequel vous exécutez PHP ( PHP_EOL).
Alix Axel
60

PHP_EOL est une constante prédéfinie en PHP depuis PHP 4.3.10 et PHP 5.0.2. Voir le manuel publication :

En utilisant cela, vous économiserez du codage supplémentaire sur les développements multiplateformes.

C'EST À DIRE.

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

Si vous avez parcouru ceci deux fois, vous verrez dans 'somefile':

some data
some data
user1649798
la source
23

Vous pouvez également utiliser file_put_contents():

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