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

| コメント(0) | トラックバック(1)

< や > を表示しようとする時は、&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のテンプレートを使ってます。

トラックバック(1)

トラックバックURL: http://www.karakuriya.biz/mt/mt-tb.cgi/383

♠♣♥♦はどのように見えていますか? HTMLの記号は、そのまま書いてもWebブラウザ上では正しく表示... 続きを読む

コメントする

このブログ記事について

このページは、H.Imaiが2006年3月 3日 09:47に書いたブログ記事です。

ひとつ前のブログ記事は「default:空文字の場合の表示の指定」です。

次のブログ記事は「nl2br:改行文字を <br />に変換」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。