Back

Keep line breaks


Victor posted 3 years ago

Hello everyone.

I add some text into mysql using textarea. I guess it keeps the text with CR/LF symbols, so when I display text with multiple lines I got them all in one string. I don't want to allow user to add any HTML markup, but I want to keep line breaks.

I have found this solution: http://stackoverflow.com/questions/26667116/how-to-keep-the-line-breaks-from-user-input-but-also-sanitize-in-blade

But is there any cleaner solution? (Except using pre tag) This one seems a little bit messy

JeroenVanOort replied 3 years ago Solution

I use {{ nl2br(e($text)) }}

Blackpig replied 3 years ago

I have a similar issue - I have a textarea that gets saved to the db. When I display it, I lose the line breaks. if I wrap with nl2br the break tag is displayed as text rather than rendered as a line break so my output looks like this:

this is some text<br />this is the next line

checking the source and the break tag is served as:

@lt;br&nbsp;/&gt;

in my blade file I tried the following:

{{ $words }}  //No line breaks displayed
{{ nl2br($words )) }} // result as described above
{{ nl2br(e($words)) }} // result as described above

Any clues as to why this may be happenning?

Xum replied 3 years ago

It should be

{!! nl2br(e($words)) !!}
hairmenu replied 2 years ago

if you do so, be carreful with $words containing JS or so

pepijn replied 3 months ago

@hairmenu with e() that should be fixed info: https://stackoverflow.com/questions/33075158/what-is-the-e-method-in-laravel-views-for


Sign in to participate in this thread!



We'd like to thank these amazing companies for supporting us