①session('message')とは?
Laravelでは、コントローラーなどでメッセージをセッションに保存できます:
return redirect()->route('index')->with('message', '投稿が完了しました!');
これをビュー側で受け取るには、以下のようにします:
{{ session('message') }}
ただし、これだけだと改行が反映されません。
②e()とは?
e($value)
- Laravelが提供するHTMLエスケープ関数
- ユーザー入力などに含まれるHTMLタグや特殊文字(<,>,"など)を安全に表示するために変換します。
例:
e('<script>alert("危険")</script>')
// =><script>alert("危険")</script>
-> XSS対策(クロスサイトスクリプティング防止)に必須の処理です。
③nl2br()とは?
nl2br($string)
- PHPの標準関数
-
文字列中の\n(改行)を
タグに変換します - 改行をそのままHTMLで再現したいときに便利
例:
nl2br("こんにちは\n世界")
// => こんにちは<br>世界
④nl2br(e(...))の意味
nl2br(e(session('message')))という順番で書く理由は、以下の通り:
- session ('message') でメッセージ文字列を取得
- e () でHTMLタグや特殊文字をエスケープ(安全に)
-
nl2br () で\nを
に変換(見た目を整える)
⑤{{}}ではなく{!! !!}を使う理由
LaravelのBladeでは:
- {{ ... }} → HTMLエスケープされた文字列を表示
- {{!! ... !!}} → HTMLをそのまま出力(XSSに注意)
今回、nl2br()によって
タグが入ってくるため、{{ }}だとエスケープされて
がただの文字列として表示されてしまいます。
→ よって、{{!! !!}}を使って「HTMLをそのまま出力」する必要があるのです。
ただし、e()でしっかりエスケープ済みなので安全です。
⑥まとめ: {!! nl2br(e(session('message'))) !!}の意味
⑦おまけ:使いどころ
- お問い合わせフォームやコメント欄など、自由入力のテキストを画面に表示する時
- 投稿完了メッセージなどを複数行に分けて表示したい時
- Laravel + Bootstrap / Tailwind CSS と組み合わせる時にも活躍