We have a display message that is auto-generated by default, but may be overridden by GET vars from the url. Since we need to treat the message as user input, it must be escaped for display. However, we want to retain the ability to include newlines.
Newlines as <br>
This won't work because escaping HTML destroys the <br>
tag.
Newlines as \n
I can't figure out how to get \n
to render as newlines. I thought putting it in a tag would render correctly, but no luck: http://jsfiddle.net/7L932/
What you're doing is more or less fine, except for you should put \n
character (newline), not the escape sequence in your html (and what Prinzhorn says also makes perfect sense, so I'll go upvote him).
Escape the HTML, and then replace \n
with <br>
.
In case you want to use \n, I fix your fiddle for you http://jsfiddle.net/hr3bg/
Your theory's sound, but \n
is a not an HTML-recognised way of inserting a new line. It either comes in explicitly (as I've inserted in a new .linebreaks
element) as a literal return in the markup, or, if you're using some intermediary scripting language that does recognise \n
(like JS), do that (as I've done to your first .linebreaks
with the jQuery code I inserted.
See my tweak to your example: http://jsfiddle.net/barney/7L932/2/