PHP Echo Line Breaks

¿Cuál es la diferencia entre \ n y \ r (sé que tiene algo que ver con el sistema operativo) y cuál es la mejor forma de repetir un salto de línea que funcionará en varias plataformas?

EDITAR: En respuesta a Jarod, usaré ths para hacer eco de un salto de línea en un archivo de registro .txt, aunque estoy seguro de que lo usaré en el futuro para cosas como hacer eco de HTML makup en una página.

  • \n es un salto de línea de Linux / Unix.
  • es un salto de línea clásico de Mac OS (no OS X). Mac OS X usa el unix anterior \n .
  • \r\n es un salto de línea de Windows.

Usualmente solo uso \n en nuestros sistemas Linux y la mayoría de las aplicaciones de Windows tratan bien de todos modos.

Use la constante PHP_EOL , que se establece automáticamente en el salto de línea correcto para el sistema operativo en el que se ejecuta el script PHP.

Tenga en cuenta que esta constante se declara desde PHP 5.0.2.

 < ?php echo "Line 1" . PHP_EOL . "Line 2"; ?> 

Para compatibilidad con versiones anteriores:

 if (!defined('PHP_EOL')) { switch (strtoupper(substr(PHP_OS, 0, 3))) { // Windows case 'WIN': define('PHP_EOL', "\r\n"); break; // Mac case 'DAR': define('PHP_EOL', "\r"); break; // Unix default: define('PHP_EOL', "\n"); } } 

La respuesta de Jarod contiene el uso correcto de \ r \ n en varios sistemas operativos. Aquí hay algo de historia:

  • \ r, o el carácter ASCII con código decimal 13, se denomina CR después de “retorno de carro”.
  • \ n, o el carácter ASCII con código decimal 10, se denomina “nueva línea” o LF después de “avance de línea”.

La terminología “retorno de carro” y “avance de línea” se remonta a cuando se usaban teletipos en lugar de terminales con monitor y teclado. Con respecto a los teletipos o las máquinas de escribir, “retorno de carro” significaba mover el cursor y regresar a la primera columna de texto, mientras que “avance de línea” significaba girar el rodillo para pasar a la siguiente línea. En ese momento, la distinción tenía sentido. Hoy las combinaciones \ n, \ r, \ r \ n para representar el final de una línea de texto son completamente arbitrarias.

No se necesita compatibilidad con versiones anteriores para PHP_EOL en PHP4.

Es necesario corregir la statement de Moore sobre la disponibilidad constante de PHP_EOL: “… se declara desde PHP 5.0.2.”.

No, ha estado presente desde PHP 4.3.10. Cualquier persona que todavía esté ejecutando algo menor que eso no debería estar en el negocio de todos modos. ¡A partir de hoy, nadie debería usar nada inferior a PHP 5!

Del manual de PHP: “PHP_EOL El símbolo correcto de ‘Fin de línea’ para esta plataforma. Disponible desde PHP 4.3.10 y PHP 5.0.2”.