読者です 読者をやめる 読者になる 読者になる

ヒビノログ

個人的なメモを淡々と記録していくブログ。最近はLaravelやスマートフォンの話題など。

Bladeエンジンの文字列変換についてのTips

PHP Laravel

Laravel Advent Calendar 2015 の2日目のフライングです。

Laravel の標準テンプレートエンジンである Blade を使って、view に渡された変数を表示する場合、テンプレートファイルの記載は以下のようになります。

こんにちは {{ $name }}さん

このとき、 {{ }} 内は htmlentities 関数で変換された文字列が出力されますので、大なり小なりの記号(<>)やシングルクォート(’)は関数の仕様に従って &lt; や &gt; や &quot; に変換されますが、他にも以下のような文字が変換対象になっています。

変換前変換後
&&amp;
¥&yen;

このあたりは何となく予想できますが「あ、それも変換するのね」という気がしなくもないです。&yen; とかね。

で、htmlentities の仕様には「HTML エンティティと等価な意味を有する文字をHTMLエンティティに変換します。」とあるため、前述のような記号のみが変換対象かと思いきや、こんな文字も変換されます。

変換前変換後
&rarr;
&darr;
&larr;
&uarr;

そう、矢印です。
ブラウザ出力時には特に問題無いかもしれませんが、メールテンプレートとして使う場合は {{ }} を使うかどうか考えた方が良いでしょう。なお変換をかけない場合は以下のように記載します。

こんにちは {!! $name !!}さん

ということで、Bladeエンジンの(というか htmlentities関数の)文字列変換についてのTipsでした。