Simplate の中の人のブログで
simplateでデフォルトでhtmlspecialcharsを使ってみる
という記事が公開されていますが、
それを参考に、エスケープを制御するためのパッチを作成してみました。
パッチファイル (simplate_escape.tar.gz) をダウンロードし、 Simplate のビルド時にパッチを適用して下さい。
$ …… $ cd simplate-0.4.1 $ tar xvfz simplate_escape.tar.gz $ patch < simplate-0.3.8_escape.diff $ phpize $ ……
Simplate のインストール手順そのものについては、 こちら のページを見て下さい。
このパッチを適用すると、simplate クラスに次の2つのプロパティが追加されます。
パッチをあてただけの状態では、今までと同じ動作をします。 自動的に HTML エスケープの処理が行われるようにするためには、
$simplate = new simplate(); $simplate->escape_function = 'htmlspecialchars'; $simplate->escape_options = 'ENT_QUOTES';
のように PHP のスクリプト内で設定して下さい。 この設定例の場合、テンプレート中の変数は、
テンプレートでの記述 | <{$var}> |
---|---|
コンパイル結果 (設定前) | <?php echo $this->_tpl_vars['var']; ?> |
コンパイル結果 (設定後) | <?php echo htmlspecialchars($this->_tpl_vars['var'], ENT_QUOTES); ?> |
のように展開されるようになります。
テンプレート中のある部分だけエスケープをオフにしたい場合は、
<{-$var}>
のように先頭にマイナス記号をつけて下さい。 また、Simplate は関数呼び出しによって、 Smarty でいうところの修飾子と同じことができるので、
<{-rawurlencode($url)}>
のように書けば、その他のエスケープにも対応できます。
エスケープに関して、注意事項をいくつか書いておきます。
日付 | 更新内容 |
2008/03/07 | Simplate 0.3.8 以降用のパッチを追加 |
2007/06/19 | Simplate 0.3.5 以降用のパッチを追加 |
2007/05/12 | 初公開 |