ejemplo - php_eol php 7
/ n vs. PHP_EOL vs.<br>? (5)
<br>
<br>
solo se usa cuando se divide el texto. Puede ver esto usado para espaciar los elementos dentro de un documento html, pero ese no es su propósito, ya que el espaciado del diseño se debe lograr con CSS, como el margin
. Aquí hay un caso de uso decente:
<p>This <br> is <br> some <br> text.</p>
Por lo general, rompo mi texto con saltos de línea para facilitar la lectura, por lo que no quiero que los saltos de línea se representen en el documento. Ese ser, la etiqueta es necesaria.
Espacio en blanco CSS, <pre>
El elemento html <pre>
es un elemento que, de forma predeterminada, utiliza la regla CSS white-space: pre;
de modo que el espacio en blanco del documento se representa dentro de ese elemento. Normalmente, solo se representará un único espacio, independientemente de la cantidad de espacios en blanco en el documento. Un muy buen uso de este estilo es para bloques de código. Si escribo un bloque de código, naturalmente lo espaciaré según lo pretendo y no me importaría especialmente envolver una etiqueta <p>
alrededor de cada línea (de todas formas no es semántica) y no quiero ensuciar mi código con <br>
cualquiera Peor aún, ¡está la sangría del código! whitespace: pre
tiene mucho sentido aquí.
<pre>
function foo() {
//etc
}
</pre>
/ r, / n, PHP_EOL
Dependiendo de la plataforma desde la que se esté ejecutando el código php, deberá generar un salto de línea con /r
, /n/
, o ambos /r/n
. PHP_EOL
elegirá automáticamente por ti, por lo que es el enfoque más dinámico.
En la mayoría de los casos, en mi opinión, <BR />
es mucho más preferible que los otros dos: /n
o PHP_EOL
.
De lo contrario, necesitamos usar " <pre></pre>
" para envolver el contenido de salida o usar nl2br()
para insertar <BR />
antes de /n
para que la marca de varias líneas pueda tener efecto en HTML. Como el siguiente ejemplo.
$fruits = array(''a''=>''apple'', ''b''=>''banana'', ''c''=>''cranberry'');
// Multiple lines by /n
foreach( $fruits as $key => $value ){
echo "$key => $value /n" ;
}
// Multiple lines by PHP_EOL
reset( $fruits );
while ( list($key, $value) = each( $fruits ) ){
echo ("$key => $value" . PHP_EOL);
}
// Multiple lines by <BR />
reset( $fruits );
while ( list($key, $value) = each( $fruits ) ){
echo ("$key => $value <BR />");
}
Algunas personas creen que PHP_EOL
es útil al escribir datos en un archivo, por ejemplo, un archivo de registro. Creará saltos de línea sin importar su plataforma.
Entonces, mi pregunta es cuando usamos /n
? ¿Cuál es la diferencia entre /n
y PHP_EOL
y <BR />
? ¿Podría algún cuerpo tener una gran lista de cada uno de sus pros y sus contras?
DOS, Unix y Mac (pre-OS X y OS X) usan diferentes caracteres o combinaciones de caracteres para representar "ir a la siguiente línea".
DOS: utiliza un CR + LF (que es ASCII 13 seguido de un ASCII 10, o
/r/n
) para representar una nueva línea.Unix: utiliza un LF (que es ASCII 10, o
/n
) para representar una nueva línea.Mac (pre-OS X): utiliza un CR (que es ASCII 13, o
/r
) para representar una nueva línea.Mac (OS X): como Unix, usa un LF para representar una nueva línea.
Por lo tanto, cuándo usar cada uno depende de lo que está buscando. Si está escribiendo para una plataforma específica sin la intención de portabilidad, use la combinación de caracteres o caracteres para romper las líneas que son importantes para esa plataforma. El propósito de PHP_EOL
es elegir automáticamente el carácter correcto para la plataforma, de modo que sus nuevas líneas sean independientes de la plataforma.
Todos estos aparecen como un solo espacio dentro de un navegador a medida que los navegadores colapsan los espacios en blanco en un espacio de visualización con fines de visualización (a menos que esté usando <pre>
como mencionó, o CSS que cambia el comportamiento de los espacios en blanco). Aquí es donde entra en juego, como ha mencionado, que convertirá estos /n
caracteres de nueva línea en <br>
para que proporcionen saltos de línea en la visualización HTML.
No tiene sentido comparar un archivo de linebreak HTML con linebreaks de texto real. <br>
es solo una página de línea en la representación del navegador de un sitio web, mientras que /n
y PHP_EOL
son códigos de línea de código fuente reales.
Como usted mismo se menciona, PHP_EOL
funcionará independientemente de la plataforma y, por lo tanto, también se prefiere sobre /n
. Inicialmente, /n
era solo el salto de línea estándar en UNIX, mientras que Macintosh usaba /r
y Windows / DOS usaba una combinación de los dos: /r/n
. PHP_EOL
embargo, cuando utiliza PHP_EOL
, no tiene que preocuparse por la plataforma.
Hoy en día, la mayoría de los sistemas y editores son lo suficientemente tolerantes como para aceptar cualquier salto de línea que decida usar, pero el uso del correcto es obviamente preferido y se logra más fácilmente con PHP_EOL
, por lo que realmente no hay razón para no usarlo.
Puede crear una función con el código de Flavio, que siempre establece la nueva línea correcta, sin importar si la ejecuta en el shell o en el navegador:
<?php
function nl($string) {
if(isset($_SERVER[''SHELL''])) return preg_replace(''//<br(/s*)?//?/>/i'', PHP_EOL, $string);
return nl2br($string);
}
print nl("One/nTwo<br>Three/r/nFour<br />Five
Six" . PHP_EOL);
?>
Tengo que ejecutar scripts en cron y guardar los resultados en un archivo de registro. Pero a veces ejecuto el script en mi navegador. Así que hago la siguiente prueba para usar el carácter correcto de fin de línea:
<?php
$eol = (isset($_SERVER[''SHELL''])) ? PHP_EOL : "<br />";
echo "DISCOVER". $eol;
?>