Pregunta

¿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 manera de hacer eco de un salto de línea que funcione entre plataformas?

EDITAR: en respuesta a Jarod, usaré ths para repetir 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 makup HTML en una página.

¿Fue útil?

Solución

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

Por lo general, solo uso \ n en nuestros sistemas Linux y la mayoría de las aplicaciones de Windows lo manejan bien de todos modos.

Otros consejos

Utilice 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 el código decimal 13, se denomina CR después de " retorno de carro " ;.
  • \ n, o el carácter ASCII con el 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 usaron teletipos en lugar de terminales con monitor y teclado. Con respecto a los teletipos o máquinas de escribir, " retorno de carro " significaba mover el cursor y volver a la primera columna de texto, mientras que " avance de línea " significaba girar el rodillo para llegar a la siguiente línea. En ese momento la distinción tenía sentido. Hoy en día, las combinaciones \ n, \ r, \ r \ n para representar el final de una línea de texto son completamente arbitrarias.

No es necesaria la compatibilidad con versiones anteriores para PHP_EOL en PHP4.

Es necesario corregir la declaración de Moore sobre la disponibilidad constante de PHP_EOL: " ... se declara desde PHP 5.0.2. " ;.

No, ha existido desde PHP 4.3.10. Cualquiera que todavía esté ejecutando algo menos que eso, no debería estar en biz de ninguna manera. A partir de hoy, ¡nadie debería usar nada menos que PHP 5!

Del manual de PHP: " PHP_EOL El símbolo correcto de 'Fin de línea' para esto plataforma. Disponible desde PHP 4.3.10 y PHP 5.0.2 " ;.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top