2008-08-31 11 views
25

Estoy analizando texto de un archivo y lo estoy almacenando en una cadena. El problema es que parte del texto en los archivos originales contiene ASCII art y otras cosas que me gustaría conservar. Cuando imprimo la cadena en el HTML page, incluso si tiene el mismo formato y todo, dado 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 lamentablemente no pude verlo correctamente en este editor de marcas: P
Básicamente, me gustaría recibir sugerencias sobre cómo mostrar ASCII art in HTML.¿Cómo mantengo el formato de espacio en blanco usando PHP/HTML?

Respuesta

52

utilizar el pre > etiqueta < (pre formateado), que va a utilizar una fuente mono espaciada (por el arte) y mantener todo el blanco espacio

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

</pre> 

puede que tenga que convertir cualquier < 's a & lt; 'S

+2

y & a & s primero. – Kornel

+3

+1 para 1337 estilo vintage – GerManson

+1

ah, los buenos viejos días de ascii art :) –

6

Al imprimir los datos utilizan nl2br() para convertir \n y \r\n en <br>

10

la <pre> y </pre> podría no ser ideal en el área de texto, etc ..

Cuando se quiere preservar la nueva línea - \n y \n\r uso nl2br como se ha mencionado por UnkwnTech y Brad Mace.

Cuando se quiere preservar espacios de uso str_replace:

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

Cuando ambos usan esto:

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

Para todos aquellos searchng para la preservación del texto tomaron de la base de datos, esto funcionó para mí, configuración de CSS como siguiente,

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

en html:

<pre > 
    <?php echo htmlentities($yourText) ; ?> 
</pre> 
Cuestiones relacionadas