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.

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").


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.


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.