Menu

Salto de línea en PHP: \n, PHP_EOL y nl2br

Para imprimir un salto de línea en PHP, escribe "\n" entre comillas dobles o usa PHP_EOL. En una página web un salto de línea no se ve, así que usa <br> o nl2br(). Aprende la diferencia, por qué '\n' entre comillas simples no funciona y cómo dividir o quitar saltos de línea.

Esta página incluye editores ejecutables: edita, ejecuta y ve el resultado al instante.

Escribe \n dentro de una cadena entre comillas dobles para imprimir un salto de línea: echo "Line 1\nLine 2";. La constante PHP_EOL hace lo mismo y se lee mejor al final de una línea: echo 'Done' . PHP_EOL;. En una página web, un salto de línea no aparece como tal; ahí necesitas <br> o nl2br().

Comillas simples vs comillas dobles

Las secuencias de escape como \n y \t solo funcionan entre comillas dobles. Entre comillas simples, '\n' son dos caracteres: una barra invertida y la letra n. Es el motivo habitual de que "\n no funcione".

La página de cadenas enumera todas las secuencias de escape que entienden las comillas dobles.

PHP_EOL vs "\n"

PHP_EOL es el final de línea del sistema en el que se ejecuta PHP: "\n" en Linux y macOS, "\r\n" en Windows. Úsalo para la salida en la terminal y para archivos que vas a leer en la misma máquina. Cuando un formato define su propio final de línea, usa ese: las cabeceras HTTP y el email necesitan "\r\n", y la mayoría de las herramientas leen bien "\n" en cualquier sitio.

"\r" es un retorno de carro y "\n" un salto de línea. Los archivos de Windows terminan las líneas con los dos, "\r\n", y por eso el texto de un usuario de Windows o de un <textarea> contiene a menudo caracteres \r que no esperabas.

Salto de línea en HTML: br y nl2br

Un navegador convierte los saltos de línea en un solo espacio, así que echo "a\nb" muestra a b en una página. O imprimes tú <br>, o conservas los saltos de línea en el texto y los conviertes con nl2br(), que inserta <br /> antes de cada uno. Ejecuta esto y compara las pestañas Salida y Página:

En la pestaña Salida los tres se parecen. En la pestaña Página el primero sale todo en una línea, nl2br() lo divide y <pre> conserva los saltos de línea tal como están escritos.

Mostrar la entrada de un textarea con sus saltos de línea

El texto de un <textarea> conserva las líneas que escribió el usuario, pero debes escaparlo antes de imprimirlo en HTML. El orden importa: primero htmlspecialchars() y luego nl2br(), porque si no se escaparían las propias etiquetas <br />. Ejecútalo, escribe unas cuantas líneas en el cuadro y pulsa Preview: el mismo script se ejecuta otra vez con $_POST lleno.

Un salto de línea de un textarea puede llegar como "\r\n" o como "\n"; los dos contienen "\n", así que contar ese carácter funciona en ambos casos. htmlspecialchars() explica por qué escapar no es opcional aquí.

Dividir una cadena por saltos de línea

explode("\n", $text) funciona con texto que has creado tú. Con texto de usuarios o de archivos, los finales de línea pueden ser "\r\n", "\n" o "\r"; preg_split('/\R/', $text) los maneja todos, porque \R coincide con cualquier salto de línea.

Quitar los saltos de línea de una cadena

Para convertir un texto de varias líneas en una sola, sustituye todos los tipos de final de línea. Sustituye "\r\n" antes que los caracteres sueltos, o cada salto de línea de Windows se convertiría en dos espacios:

trim() y rtrim() quitan los saltos de línea de los extremos de una cadena pero nunca del centro, así que son la herramienta adecuada para una línea leída de un archivo y la equivocada para unir líneas.

Preguntas frecuentes

¿Cómo imprimo un salto de línea con echo en PHP?

Pon \n dentro de una cadena entre comillas dobles: echo "Line 1\nLine 2";. O añade la constante: echo 'Line 1' . PHP_EOL;. En un navegador el salto de línea no se ve; ahí usa <br> o nl2br().

¿Por qué \n no funciona en PHP?

O la cadena está entre comillas simples, donde '\n' es una barra invertida y una n, o la salida se muestra como HTML, donde el navegador trata un salto de línea como un espacio. Usa "\n" entre comillas dobles para la salida de texto, y nl2br() o <br> para las páginas web.

¿Qué es PHP_EOL?

Una constante que contiene el final de línea del sistema operativo en el que se ejecuta PHP: "\n" en Linux y macOS, "\r\n" en Windows. Úsala para la salida destinada a la terminal o a archivos locales; en HTTP, emails y archivos CSV el formato suele fijar el final de línea sea cual sea el sistema.

¿Qué hace nl2br en PHP?

nl2br($text) inserta <br /> antes de cada salto de línea de la cadena, para que el texto escrito en un <textarea> conserve sus líneas al mostrarse en HTML. Escapa primero: nl2br(htmlspecialchars($text)).

¿Cómo quito los saltos de línea de una cadena en PHP?

Sustituye los tres tipos de final de línea: str_replace(["\r\n", "\r", "\n"], ' ', $text), o con una expresión regular, preg_replace('/\R/', ' ', $text). Para quitar solo el salto de línea final, usa rtrim($text, "\r\n").

Ilustración de los lenguajes de programación de Coddy

Aprende a programar con Coddy

COMENZAR