Rédaction d'une nouvelle ligne de fichier en PHP (saut de ligne)
Question
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
sous forme de chaîne, de sorte que les regards de fichiers comme ceci:
40119\n40122\n40120\n42155\n36925\n45881\n42145\n45880
De Google'ing 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 à ressembler à ceci:
40119
40122
40120
42155
36925
45881
42145
45880
Merci.
La solution
Remplacer '\n'
avec "\n"
. La séquence d'échappement n'est pas reconnu lorsque vous utilisez '
.
Pour la question de savoir comment écrire les fins de ligne, voir la note . Fondamentalement, différents systèmes d'exploitation ont des conventions pour les fins de ligne. Windows utilise "\ r \ n", les systèmes d'exploitation basés sur UNIX utilisent "\ n". Vous devriez en tenir à une convention (je choisi « \ n ») et ouvrez votre fichier en mode binaire (fopen
devrait obtenir « wb », pas « w »).
Autres conseils
Utilisation PHP_EOL
qui délivre en sortie \r\n
ou \n
en fonction du système d'exploitation.
PHP_EOL est une constante prédéfinie en PHP PHP depuis 4.3.10 et PHP 5.0.2. Voir l'affichage manuel :
En utilisant cela vous évitera de codage supplémentaire sur les développements multiplateformes.
IE.
$data = 'some data'.PHP_EOL;
$fp = fopen('somefile', 'a');
fwrite($fp, $data);
Si vous bouclées ce que vous deux fois voir dans « somefile »:
some data
some data
Vous pouvez également utiliser file_put_contents()
:
file_put_contents('ids.txt', implode("\n", $gemList) . "\n", FILE_APPEND);