Como mantenho a formatação de espaços em branco usando PHP/HTML?
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
.
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(' ', ' ', $stringVariable);
Quando ambos usam isso:
$result = str_replace(' ', ' ', $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>