Saltos de línea de eco PHP
-
05-07-2019 - |
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.
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!