2006年03月03日

escape:<や>をそのまま表示

< や > を表示しようとする時は、&lt; や &gt; とわざわざ変換してやらないといけないんですが、escapeを使うと、その変換をしてくれます。

$str = "<b>太字</b>";
$smarty = new Smarty;
$smarty->assign("str",$str);
$smarty->display('index.html')

とPHPでは、値をそのまま渡して、テンプレートのほうで

{$str|escape}

と書けば、出力結果は

<b>太字</b>

となります。この種の変換はいちいち面倒なので、かなり重宝します。

escapeしなければ、<b> はそのままタグとして、太字 と表示されます。

escapeには、上記のような、HTMLエスケープだけではなく、もっと他の変換も出来ます。

よく使うであろうと思うのが、メールアドレスやURLの変換です。

ホームページにはメールアドレスの表示は不可欠(これがないと訪問者はお問合せが出来ない)なんですが、これらを収集する業者もいます。
知らないところから来るスパムメールもこの種の収集で集められたメールアドレスに一斉に送信してます。

これを収集されにくくするために、HTMLエンティティというものがあります。HTML上はエンティティされた文字なので、何が書いてあるかわかりませんが、ブラウザで表示する時は、ちゃんと表示されます。

HTMLエンティティ表記にする場合は、escape:hexentity と書きます。

<a href="{$mail|escape:hexentity}">{$mail|escape:hexentity</a>

と書きます。
エンティティは16進で行われるので、古いブラウザだと対応していないかもしれません。

HTMLでメールアドレスを表示するだけの場合は、最初からエンティティ表記の文字をHTMLに書いちゃえばいいです。
変換はこっちで出来ます。
HTMLエンティティ変換

上のSmartyのテンプレートを使ってます。

2006年03月03日 09:47 |  4.変数の修正子


トラックバック

このエントリーのトラックバックURL:

このリストは、次のエントリーを参照しています: escape:<や>をそのまま表示:

» HTMLエンティティ(特殊文字) ♠♣♥♦ from MAKIZOU.COM
♠♣♥♦はどのように見えていますか? HTMLの記号は、そのまま書いてもWebブラウザ上では正しく表示... [続きを読む]

トラックバック時刻: 2006年05月15日 00:34

コメント

コメントしてください




保存しますか?