2010-11-16 12 views
27

tengo el siguiente script de prueba:Salto de línea no funciona cuando se escribe en un archivo de texto en PHP

<?php 

$myFile = "testFile.txt"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 
$stringData = "Floppy Jalopy\n"; 
fwrite($fh, $stringData); 
$stringData = "Pointy Pinto\n"; 
fwrite($fh, $stringData); 
fclose($fh); 

?> 

cuando se ejecuta sin embargo, abrió la libreta usign, los datos se devuelven en una sola línea sin interrupciones como:

Floppy cacharro (caja loca) puntiagudo Pinto (caja loca)

donde no puedo encontrar el carácter apropiado para 'caja loca', pero es una REALMENTE caja loca. ¡LO QUE DA!

Respuesta

33

Si desea abrir el archivo en Windows Bloc de notas, debe utilizar saltos de línea de Windows: \r\n

+2

si lo abre en Wordpad, podrá manejar '\ n' o' \ r \ n', al igual que muchos otros editores, pero el Bloc de notas es quisquilloso. – Spudley

51

Es mejor utilizar PHP_EOL. Esto es multiplataforma, por lo que elige automáticamente los caracteres correctos de la nueva línea para la plataforma en la que PHP se está ejecutando actualmente.

$stringData = "Floppy Jalopy" . PHP_EOL; 

PHP Constants

+7

Solo es "mejor" usar 'PHP_EOL' si los archivos se usan siempre en la misma plataforma en la que se ejecuta el script. Según mi experiencia, la mayoría de las veces crea archivos para descargarlos, enviarlos por correo electrónico o analizarlos más tarde, todos los casos en que necesita archivos con un carácter de línea nueva * específico * y no el de la plataforma en la que se ejecuta el script. – AndreKR

+0

@AndreKR: cierto. –

+0

Esta parece ser la mejor respuesta. –

1

Su código funciona muy bien.

Use Notepad2 o Notepad++ si está trabajando en Windows. El Bloc de notas incorporado no puede hacer frente a los finales de línea estilo Unix.

0

. PHP_EOL; funcionará universalmente

+0

Esto parece estar repitiendo [esta respuesta existente] (http://stackoverflow.com/a/4196123). – Pang

Cuestiones relacionadas