15
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Laravel5(Blade)のViewで改行させたいだけなのに少し悩んだ

Posted at

Laravel5、と言うかBladeを使用したページで改行コードが入った文字列を表示させようとして少し悩んだのメモ。
PHPに不慣れだったりLaravelの情報を調べると4と5が混在していて探しにくいとか言い訳してみる。

環境

Mac OS X El Capitan 10.11.4
Laravel Framework version 5.2.39

#素直に改行させてみる

こんなのFrameworkとか関係なくPHPとHTMLの世界の話でしょ?
PHPにnl2brって便利な関数あるみたいだし楽勝じゃん!
と舐めきって書いたのが以下のコード。

controller.php

return view('view')->with('str',nl2br($str, false));```

view.blade.php
```{{ $str }}```

出力結果
```文字列<br> 文字列```

うん、nl2br関数は効いてるけど上手にエスケープされてるね。
セキュアで素敵だね。でも今は素直に表示して頂きたい。

と言うか三重の波括弧`{{{ $str }}}`だとエスケープされるけど
二重の波括弧`{{ $str }}`ならエスケープされないんじゃないの?
と思ったらそれはLaravel4まででLaravel5ではどちらもエスケープされるとの事。

Laravel5でエスケープされないように修正。
view.blade.php
```{!! $str !!}```

出力結果
```文字列
文字列```
そう、これが見たかった。

ちなみにPHPのコード上で
```$str = '文字列\n文字列';```
と文字列をシングルクォートにすると\nが文字列として扱われるので`nl2br`すら効かずにそのまま出力される。
細かい、細かいよPHP。
15
17
1

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
15
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?