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);
}