web-dev-qa-db-fra.com

Écrire une nouvelle ligne dans un fichier dans PHP (saut de ligne)

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

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

D'après Google, il me dit d'utiliser \r\n, mais \r est un retour à la ligne 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.

99
VIVA LA NWO

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

Voir le manuel .

Pour savoir comment écrire les fins de ligne, voir 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 (fopen devrait avoir "wb", pas "w").

254
Artefacto

Utilisez PHP_EOL pour obtenir \r\n ou \n en fonction du système d'exploitation.

59
Aldarien

PHP_EOL est une constante prédéfinie dans PHP puisque PHP 4.3.10 et PHP 5.0.2. Voir le manuel affichage:

En utilisant cela, vous éviterez un codage supplémentaire sur les développements multi-plateformes.

C'EST À DIRE.

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

Si vous parcouriez cela deux fois, vous verriez dans 'un fichier':

some data
some data
57
user1649798

Vous pouvez également utiliser file_put_contents() :

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