Question

I'm parsing text from a file and storing it in a string. The problem is that some of the text in the original files contains ASCII art and whatnot that I would like to preserve. When I print out the string on the HTML page, even if it does have the same formatting and everything since it is in HTML, the spacing and line breaks are not preserved. What is the best way to print out the text in HTML exactly as it was in the original text file?
I would like to give an example, but unfortunately, I was not able to get it to display correctly in this markdown editor :P
Basically, I would like suggestions on how to display ASCII art in HTML.

Was it helpful?

Solution

use the <pre> tag (pre formatted), that will use a mono spaced font (for your art) and keep all the white space

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

</pre>  

You might have to convert any <'s to &lt; 's

OTHER TIPS

the <pre> and </pre> might not be ideal in textarea etc..

When wanting to preserve new line - \n and \n\r use nl2br as mentioned by UnkwnTech and Brad Mace.

When wanting to preserve spaces use str_replace:

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

When both use this:

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

When you print the data use nl2br() to convert \n and \r\n into <br>

For all those searchng for preserving the text fetched from database , this worked for me , setting CSS as following ,

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

in html :

<pre >
     <?php echo htmlentities($yourText ) ; ?>
</pre>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top