LoginSignup
4
3

More than 5 years have passed since last update.

PHPのテンプレートエンジンで改行表示

Last updated at Posted at 2018-02-18

textarea等に入力された改行は改行コードで保存されますが、それをhtmlとして出力する際の方法です。
使ったことのないテンプレートエンジンは知りません。

Smarty

{ $input_text|escape:"html"|nl2br }

escape:"html"htmlspecialchars($input_text, ENT_QUOTES, SMARTY_RESOURCE_CHAR_SET)

  • double_encodeはtrue(デフォルト)なので既存のエンティティも変換する
  • エンコーディングはSMARTY_RESOURCE_CHAR_SET
  • 改行は<br />
{ nl2br(htmlspecialchars($input_text, ENT_QUOTES, 'UTF-8', false), false) }
  • double_encodeはfalseなので既存のエンティティは変換しない
  • エンコーディングはUTF-8
  • 改行は<br>

Blade

{!! nl2br(htmlspecialchars($input_text, ENT_QUOTES, 'UTF-8', false), false) !!}
  • double_encodeはfalseなので既存のエンティティは変換しない
  • エンコーディングはUTF-8
  • 改行は<br>

Laravelだとヘルパー関数が使えるらしいです

{!! nl2br(e($input_text), false) !!}
  • double_encodeはfalseなので既存のエンティティは変換しない
  • エンコーディングはUTF-8
  • 改行は<br>
src/Illuminate/Support/helpers.php
function e($value, $doubleEncode = false)
{
    if ($value instanceof Htmlable) {
        return $value->toHtml();
    }
    return htmlspecialchars($value, ENT_QUOTES, 'UTF-8', $doubleEncode);
}

参考

htmlspecialchars
nl2br

4
3
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
4
3