Pregunta

Estoy analizando texto de un archivo y almacenándolo en una cadena.El problema es que parte del texto de los archivos originales contiene ASCII art y todo eso que me gustaría conservar.Cuando imprimo la cadena en el HTML page, incluso si tiene el mismo formato y todo ya que está en HTML, el espaciado y los saltos de línea no se conservan.¿Cuál es la mejor manera de imprimir el texto en HTML ¿Exactamente como estaba en el archivo de texto original?
Me gustaría dar un ejemplo, pero desafortunadamente no pude mostrarlo correctamente en este editor de rebajas :P
Básicamente, me gustaría recibir sugerencias sobre cómo mostrar ASCII art in HTML.

¿Fue útil?

Solución

use la etiqueta <pre> (preformateada), que usará una fuente monoespaciada (para su arte) y mantendrá todo el espacio en blanco

<pre>
text goes here and here 
             and here and here            Some out here
     ▄             ▄█▄ █▄       ▄
 ▄█▀█▓ ▄▓▀▀█▀ ▀▀▀█▓▀▀ ▀▀    ▄█▀█▓▀▀▀▀▀▓▄▀██▀▀
██  ██ ▀██▄▄ ▄█  ▀ ░▒ ░▒   ██  ██ ▄█▄ █▀ ██
█▓▄▀██  ▄ ▀█▌▓█    ▒▓ ▒▓   █▓▄▀██ ▓█ ▀▄  █▓
█▒  █▓ ██▄▓▀ ▀█▄▄█▄▓█ ▓█   █▒  █▓ ▒█  ▓█▄ ▒
    ▀▒           ▀  ▀ █▀       ▀▒  ▀  █▀  ░

</pre>  

Es posible que tengas que convertir cualquier < a <'s

Otros consejos

el <pre> y </pre> Puede que no sea ideal en el área de texto, etc.

Cuando se quiere preservar una nueva línea - \n y \n\r usar nl2br como lo mencionan UnkwnTech y Brad Mace.

Cuando se quiera preservar espacios utilice str_replace:

str_replace(' ', '&nbsp;', $stringVariable);

Cuando ambos usan esto:

$result = str_replace(' ', '&nbsp;', $stringVariable);
$result = nl2br($result);

Cuando imprimes el uso de datos nl2br() para convertir \n y \r\n en <br>

Para todos aquellos que buscan preservar el texto obtenido de la base de datos, esto funcionó para mí, configurando CSS de la siguiente manera:

pre {
     white-space: pre-line;
     text-align : left;
  }

en HTML:

<pre >
     <?php echo htmlentities($yourText ) ; ?>
</pre>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top