Come mantengo la formattazione degli spazi bianchi utilizzando PHP/HTML?
Domanda
Sto analizzando il testo da un file e memorizzandolo in una stringa.Il problema è che parte del testo nei file originali contiene ASCII art
e quant'altro che vorrei preservare.Quando stampo la stringa sul file HTML page
, anche se ha la stessa formattazione e tutto il resto da quando è presente HTML
, la spaziatura e le interruzioni di riga non vengono conservate.Qual è il modo migliore per stampare il testo in HTML
esattamente come era nel file di testo originale?
Vorrei fare un esempio, ma sfortunatamente non sono riuscito a visualizzarlo correttamente in questo editor di markdown :P
Fondamentalmente, vorrei suggerimenti su come visualizzare ASCII art in HTML
.
Soluzione
usa il tag <pre> (preformattato), che utilizzerà un carattere a spaziatura fissa (per la tua grafica) e manterrà tutto lo spazio bianco
<pre>
text goes here and here
and here and here Some out here
▄ ▄█▄ █▄ ▄
▄█▀█▓ ▄▓▀▀█▀ ▀▀▀█▓▀▀ ▀▀ ▄█▀█▓▀▀▀▀▀▓▄▀██▀▀
██ ██ ▀██▄▄ ▄█ ▀ ░▒ ░▒ ██ ██ ▄█▄ █▀ ██
█▓▄▀██ ▄ ▀█▌▓█ ▒▓ ▒▓ █▓▄▀██ ▓█ ▀▄ █▓
█▒ █▓ ██▄▓▀ ▀█▄▄█▄▓█ ▓█ █▒ █▓ ▒█ ▓█▄ ▒
▀▒ ▀ ▀ █▀ ▀▒ ▀ █▀ ░
</pre>
Potrebbe essere necessario convertire qualsiasi < in <'S
Altri suggerimenti
IL <pre>
E </pre>
potrebbe non essere l'ideale in textarea ecc.
Quando si vuole preservare una nuova linea - \n
E \n\r
utilizzo nl2br come menzionato da UnkwnTech e Brad Mace.
Quando si vuole preservare gli spazi utilizzare str_replace:
str_replace(' ', ' ', $stringVariable);
Quando entrambi usano questo:
$result = str_replace(' ', ' ', $stringVariable);
$result = nl2br($result);
Quando stampi i dati usa nl2br()
convertire \n
E \r\n
in <br>
Per tutti coloro che cercano di preservare il testo recuperato dal database, questo ha funzionato per me, impostando CSS come segue,
pre {
white-space: pre-line;
text-align : left;
}
nell'html:
<pre >
<?php echo htmlentities($yourText ) ; ?>
</pre>