LoginSignup
2
1

More than 3 years have passed since last update.

Laravel textarea 改行反映

Posted at

はじめに

投稿するテキストエリア内で改行したのに表示される画面だと改行が反映されてない。
割と簡単にできたのメモ。
Laravelのbladeテンプレート使います

Article.blade.php
<p>{{$post->body}}</p>

Laravelの二重中括弧は、htmlspecialchars()関数を通した表示になっています。
XSS対策を初めからやってくれてるんですね。

つまり{{$post->body}} = echo htmlspecialchars($post->body)てことです。
これを踏まえて、改行を表示していく。

PHPの nl2br()関数

この関数を使えば 改行がある位置に改行を示すHTMLタグを挿入することができる。
なので
nl2br(htmlspecialchars($post->body))
これでいける!と思いきやこれだとうまくいきません。
二重括弧に入れているのでエスケープ処理が実施されてしまって
ただの文字列として表示されちゃう。

bladeテンプレートエンジンでは、エスケープ処理をしないデータ表示の構文がある。
{!! !!}
これで囲んじゃえばいいだけです!

まとめ

以上から
{!! nl2br(htmlspecialchars($post->body)) !!}
これOk。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1