Laravel Advent Calendar 2015 の2日目のフライングです。
Laravel の標準テンプレートエンジンである Blade を使って、view に渡された変数を表示する場合、テンプレートファイルの記載は以下のようになります。
こんにちは {{ $name }}さん
このとき、 {{ }} 内は htmlentities 関数で変換された文字列が出力されますので、大なり小なりの記号(<>)やシングルクォート(’)は関数の仕様に従って < や > や " に変換されますが、他にも以下のような文字が変換対象になっています。
変換前 | 変換後 |
---|---|
& | & |
¥ | ¥ |
このあたりは何となく予想できますが「あ、それも変換するのね」という気がしなくもないです。¥ とかね。
で、htmlentities の仕様には「HTML エンティティと等価な意味を有する文字をHTMLエンティティに変換します。」とあるため、前述のような記号のみが変換対象かと思いきや、こんな文字も変換されます。
変換前 | 変換後 |
---|---|
→ | → |
↓ | ↓ |
← | ← |
↑ | ↑ |
そう、矢印です。
ブラウザ出力時には特に問題無いかもしれませんが、メールテンプレートとして使う場合は {{ }} を使うかどうか考えた方が良いでしょう。なお変換をかけない場合は以下のように記載します。
こんにちは {!! $name !!}さん
ということで、Bladeエンジンの(というか htmlentities関数の)文字列変換についてのTipsでした。