Pergunta

Estou analisando o texto de um arquivo e armazenando-o em uma string.O problema é que parte do texto nos arquivos originais contém ASCII art e outras coisas que eu gostaria de preservar.Quando imprimo a string no HTML page, mesmo que tenha a mesma formatação e tudo mais, já que está em HTML, o espaçamento e as quebras de linha não serão preservados.Qual a melhor forma de imprimir o texto em HTML exatamente como estava no arquivo de texto original?
Gostaria de dar um exemplo, mas infelizmente não consegui exibi-lo corretamente neste editor de markdown :P
Basicamente, gostaria de sugestões sobre como exibir ASCII art in HTML.

Foi útil?

Solução

use a tag <pre> (pré-formatada), que usará uma fonte mono espaçada (para sua arte) e manterá todos os espaços em branco

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

</pre>  

Você pode ter que converter qualquer < para <de

Outras dicas

o <pre> e </pre> pode não ser ideal em textarea etc.

Ao querer preservar a nova linha - \n e \n\r usar nl2br conforme mencionado por UnkwnTech e Brad Mace.

Quando quiser preservar espaços utilize str_replace:

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

Quando ambos usam isso:

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

Ao imprimir os dados, use nl2br() converter \n e \r\n em <br>

Para todos aqueles que buscam preservar o texto buscado no banco de dados, isso funcionou para mim, definindo CSS da seguinte forma,

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

em HTML:

<pre >
     <?php echo htmlentities($yourText ) ; ?>
</pre>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top