尊重Laravel刀片中的换行

Fra*_*nRP 2 php laravel laravel-blade

令人怀疑的是,我尝试使用不同的方法自行解决,但没有一个能给我带来预期的结果。

当我在项目的数据库中保存文本类型的变量时,就会出现问题。它使用换行符保存它,实际上,当我尝试从其中一种视图对其进行编辑时,它会尊重这些跳转。当我想blade.php在所有文本都没有任何换行符的视图中显示它时,就会出现问题。

我使用了诸如nl2br ()或的不同功能str_replace,它们所做的只是将/ n更改为br标签的换行符,而不是应用这些换行符,而是将它们写在屏幕上文本旁边。

我不知道是否应该在服务器上执行对变量的更改或修改,然后将其发送到视图,而不是在视图中执行{{nl2br ($ user-> proffile)}}或使用str_replace

首先得到英语的宽恕,并在此先感谢您的帮助

小智 10

安全警告:此答案会禁用安全功能。不要在生产中使用!

只是{!! nl2br($user->proffile) !!}

{!! !!}代替{{ }}

我在laravel 8 Blade中进行了测试,它有效。

  • 使用 nl2br(e($user->profile)) 转义用户输入。也适用于所有 Laravel 8。 (6认同)

Ale*_*elt 8

更好的方法是使用纯 css

<p style="white-space: pre-wrap">{{ $text }}</p>
Run Code Online (Sandbox Code Playgroud)

使用显示未转义的文本{!! ... !!}非常危险,因为它允许 XSS 攻击。


Has*_*aan 5

您可以先进行转义,e()然后再应用nl2br()

{{ nl2br(e($user->proffile)) }}
Run Code Online (Sandbox Code Playgroud)

e() 是Blade在编译三方括号时使用的功能

对于Laravel 5,请使用以下命令:{!! nl2br(e($user->proffile)) !!}


小智 5

在 Laravel 5 中,您可以使用 {!! nl2br(e($user->proffile)) !!} 但这将在浏览器中显示 html。这样做不会显示 HTML {!! nl2br($user->proffile) !!} 上次我用的是 laravel 5.6