Escribir una nueva línea de archivo en PHP (salto de línea)
Pregunta
Mi código:
$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);
Por alguna razón, se está escribiendo \n
como una cadena, por lo que las miradas de archivo como este:
40119\n40122\n40120\n42155\n36925\n45881\n42145\n45880
De Google'ing que me indica que utilice \r\n
, pero \r
es un retorno de carro que no parece ser lo que quiero hacer. Sólo quiero que el archivo a tener este aspecto:
40119
40122
40120
42155
36925
45881
42145
45880
Gracias.
Solución
Reemplazar '\n'
con "\n"
. La secuencia de escape no se reconoce cuando se utiliza '
.
Vea la manual de .
Para la pregunta de cómo escribir los finales de línea, ver la nota aquí . Básicamente, los diferentes sistemas operativos tienen diferentes convenciones para finales de línea. Windows utiliza "\ r \ n", los sistemas operativos basados ??en Unix utilice "\ n". Se debe adherir a una convención (yo elegí "\ n") y abra el archivo en modo binario (fopen
debe recibir "wb", no "w").
Otros consejos
Uso PHP_EOL
que emite \r\n
o \n
función del sistema operativo.
PHP_EOL es una constante predefinida en PHP a partir de PHP 4.3.10 y PHP 5.0.2. Ver la publicación manual de :
Usando esto le ahorrará adicional de codificación sobre la evolución de plataforma cruzada.
IE.
$data = 'some data'.PHP_EOL;
$fp = fopen('somefile', 'a');
fwrite($fp, $data);
Si iterado esto dos veces que se ven en 'somefile':
some data
some data
También puede utilizar file_put_contents()
:
file_put_contents('ids.txt', implode("\n", $gemList) . "\n", FILE_APPEND);