2010-06-10 45 views
22

Por alguna razón, no puedo usar \n para crear un salto de línea cuando se da salida a un archivo con PHP. Simplemente escribe "\n" en el archivo. También intenté usar "\\n", donde simplemente escribe "\ n" (como se esperaba). Pero no puedo entender por qué agregar \ n a mis cadenas no es crear nuevas líneas. También probé \r\n pero simplemente agrega "\r\n" a la línea en el archivo.Fuentes de línea PHP ( n) No funciona

Ejemplo:

error_log('test\n', 3, 'error.log'); 
error_log('test2\n', 3, 'error.log'); 

Salidas:

test\ntest2\n 

Uso de MAMP en OSX en caso de que lo que importa (una especie de PHP cosa config tal vez?).

¿Alguna sugerencia?

Respuesta

42

Usa las comillas dobles. "test\n" funcionará bien.

Si la cadena está encerrada entre comillas dobles ("), PHP interpretará más secuencias de escape para caracteres especiales:.

http://php.net/manual/en/language.types.string.php

+0

utilizando comillas simples no cambia el valor en entidades, por lo que debe usar el doble. +1 – RobertPitt

+5

¿Cómo podría dar una respuesta tan completa en menos de 2 minutos? ¡Ese es el tiempo que aprovecho para ** leer ** la pregunta solo! : o – cregox

2

Es porque se utiliza apóstrofos (') Uso comillas (") en su lugar. 'incita a PHP a usar lo que está entre los apóstrofes literalmente.

3

Debe utilizar comillas dobles. Las comillas dobles tienen más caracteres de escape.

error_log("test\n", 3, 'error.log'); 
error_log("test2\n", 3, 'error.log'); 
2

Las comillas dobles son lo que usted quiere. Las comillas simples ignoran el escape \. Las comillas dobles también evaluarán las expresiones de variables por ti.

Compruebe this page en el manual php para más.

5

Estoy bastante seguro de que está produciendo un archivo html. El problema es que html ignora las nuevas líneas en la fuente, lo que significa que debe reemplazar las líneas nuevas con <br/> si desea una línea nueva en la pantalla de la página resultante.

21

\n no debe ser visto como una nueva línea por el usuario final, debe usar el elemento html <br/> para eso. /n solo afecta la forma en que el html generado por php aparece en el código fuente de la página web. si va a su página web y hace clic en 'ver fuente' verá html generado por php como una línea larga. No es bonito. Eso es lo que \n es para ; para romper ese html generado por php en líneas más cortas. El propósito de \n es crear una página de 'fuente de vista' más bonita.

+0

¡Aceptaría esto como la respuesta! – mok

+0

¿Por qué se dirige a la página 'ver fuente' en lugar de a la salida de la página web? –

1

para colocar el \n entre comillas dobles tratar


$LOG = str_replace('\n', "\n", $LOG); 
3

nl2br() uso función para crear una nueva línea de

echo nl2br("Welcome\r\n This is my HTML document", false); 

El resultado del ejemplo sería:

Bienvenido
Este es mi documento HTML

5

Cuando ejecuta un script PHP en un navegador, se representará como HTML de manera predeterminada. Si los libros que está usando muestran lo contrario, entonces el código o la ilustración son inexactos. Puede usar "ver fuente" para ver lo que se envió al navegador y verá que sus alimentaciones de línea están presentes.

<?php 
echo "Line 1\nLine 2"; 
?> 

Esto hará que en el navegador como:

Line 1 Line 2 

Si necesita enviar mensajes de texto sin formato a su navegador, puede usar algo como:

<?php 
header('Content-type: text/plain'); 
echo "Line 1\nLine 2"; 
?> 

Esta es la salida:

Line 1 
Line 2 
0

Si quiere imprimir algo como esto con una nueva línea (\ n) después de que:

<p id = "theyateme">Did it get eaten?</p> 

Para imprimir lo anterior, usted debe hacer esto:

<?php 
    print('<p id = "theyateme">Did it get eaten?</p>' . "\n"); 
?> 

El código de cliente desde arriba sería:

<p id = "theyateme">Did it get eaten?</p> 

La salida desde arriba sería:

llegó hasta comido?

Yo sé que es difícil, pero siemprehacerlo de esa manera, y que casi siempre hay que hacerlo de esa manera.

A veces desea que PHP imprima \ n a la página en lugar de dar una nueva línea, como en el código JavaScript (generado por PHP).

NOTA acerca de la respuesta: Puede ser como: ¿Por qué usaste print en lugar de echo (me gusta mi eco). Eso es porque prefiero print over echo y printf, porque funciona mejor en algunos casos (mis casos usualmente), pero se puede hacer bien con echo en este caso.