2006年03月03日
escape:<や>をそのまま表示
< や > を表示しようとする時は、< や > とわざわざ変換してやらないといけないんですが、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



