display mysql newline in HTML
-
19-09-2019 - |
Question
Certain fields in our mysql db appear to contain newline characters so that if I SELECT on them something like the following will be returned for a single SQL call:
Life to be sure is nothing much to lose
But young men think it is and we were young
If I want to preserve the line breaks when displaying this field on a webpage, is the standard solution to write a script to replace '\n\r' with a br HTML tag or is there a better way?
Thanks!
Solution
Assuming PHP here...
nl2br()
adds in <br />
for every \n
. Don't forget to escape the content first, to prevent XSS attacks. See below:
<?php echo nl2br(htmlspecialchars($content)); ?>
OTHER TIPS
HTML is a markup language. Regardless of how many linebreaks you put in the source code, you won't see anything from it back in the presentation (of course assuming you aren't using <pre>
or white-space:pre
). HTML uses the <br>
element to represent a linebreak. So you basically indeed need to convert the real and invisible linebreaks denoted by the characters xA
(newline, linefeed, LF, \n
) and/or xD
(carriage return, CR, \r
) by a HTML <br>
element.
In most programming languages you can just do this by a string replace of "\n"
by "<br>"
.
You can wrap it in <pre>
.. </pre>
.