2010-06-18 20 views
80

Mi código:Escritura de una nueva línea para presentar en PHP

$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 el archivo tiene el siguiente aspecto:

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

De Google'ing me dice que use \r\n, pero \r es un retorno de carro que no parece ser lo que quiero hacer. Solo quiero que el archivo se vea así:

40119 
40122 
40120 
42155 
36925 
45881 
42145 
45880 

Thanks.

Respuesta

219

Reemplace '\n' con "\n". La secuencia de escape no se reconoce cuando usa '.

Ver el manual.

Para la cuestión de cómo escribir finales de línea, consulte la nota here. Básicamente, diferentes sistemas operativos tienen diferentes convenciones para terminaciones de línea. Windows usa "\ r \ n", los sistemas operativos basados ​​en Unix usan "\ n". Debes apegarte a una convención (yo elegiría "\ n") y abrir tu archivo en modo binario (fopen debería tener "wb", no "w").

+0

Muchas gracias, deberían haber pensado que yo :) Sólo puedo aceptar su respuesta en 9 minutos, pero cuando Puedo y lo haré. –

+0

He cambiado "\ r \ n" a "\ n" para la terminación de mi línea y funcionó. Gracias. – csonuryilmaz

18

También puede utilizar file_put_contents():

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

Uso PHP_EOL que da salida a \r\n o \n función del sistema operativo.

+4

No se meta en problemas, siempre use '\ n' a menos que desee abrir el archivo en un sistema operativo específico; si es así, use la combinación de nueva línea de ese sistema operativo, y no el sistema operativo en el que está ejecutando PHP (' PHP_EOL '). –

44

PHP_EOL es una constante predefinida en PHP desde PHP 4.3.10 y PHP 5.0.2. Consulte la publicación manual:

Usar esto le ahorrará codificación adicional en desarrollos 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