2010-02-24 29 views
22

Tengo un archivo en el que estoy escribiendo y no puedo obtener file_put_contents para anexar la siguiente entrada en una nueva línea, incluso después de un carácter de nueva línea. ¿Qué me estoy perdiendo? Estoy en una máquina de Windows.file_put_contents y una nueva línea de ayuda

$file = 'test.txt'; 
$message = "test\n\n"; 
file_put_contents($file, $message, FILE_APPEND); 

Respuesta

9

¿cómo ves los contenidos de $file? si está usando el bloc de notas, no puede ver \n.

+0

Sí, en el bloc de notas ... Ok, ¿entonces este es mi problema? ¿Hay algo que pueda hacer para ver los descansos en el bloc de notas? – jim

+7

\ r \ n en lugar de \ n – VolkerK

+0

uso notepad2. descargue en www.flos-freeware.ch – stillstanding

73

tratar

$file = 'test.txt'; 
$message = "test".PHP_EOL; 
file_put_contents($file, $message, FILE_APPEND); 

o

$file = 'test.txt'; 
$message = "test\r\n"; 
file_put_contents($file, $message, FILE_APPEND); 
+14

+1 para usar 'PHP_EOL' – Gordon

+1

" prueba ".PHP_EOL; ¡Funciona! – noober

13

Para el PHP_EOL usted puede no estar viendo su nueva línea, ya que está definiendo el final de la línea después de escribir su nueva línea. Por lo tanto, la nueva línea solo se crea después de agregar el nuevo contenido a la última línea de su archivo de texto.

se debe leer como esto:

$file = 'test.txt'; 
$message = 'some message that should appear on the last line of test.txt'; 
file_put_contents($file, PHP_EOL . $message, FILE_APPEND); 
+2

Esta respuesta necesita MUCHO más amor. Esto solucionó mi problema. – ILikeTurtles

+0

funciona muy bien para mí, gracias. –

2

acaba de dar una nueva línea normal y funciona

$file = 'test.txt'; 
$message = "test 
"; 
file_put_contents($file, $message, FILE_APPEND); 
1

primer lugar, leer algo sobre la nueva línea carácter. Es diferente para cada sistema operativo ... Hay LF, CR , CR + LF ... Tener una mirada here

En Windows, es necesario CR + LF (\r\n) como Mathieu ya lo dijo. En Linux, sólo se necesita LF (\n)

Pero, sin duda, utilice PHP_EOL.

Al usar archivos, probablemente necesite saber más acerca de los separadores de ruta y directorio. Ellos también son diferentes. Utilice DIRECTORY_SEPARATOR en lugar de barra diagonal o barra invertida;)

1

Para aquellos que están pasando el segundo argumento de file_put_contents como una matriz en lugar de una cadena, que también trabaja para poner PHP_EOL como el último elemento de la matriz:

file_put_contents($file, array('value 1', 'value 2', PHP_EOL), FILE_APPEND); 
Cuestiones relacionadas