<?php /* * Smarty plugin * ------------------------------------------------------------- * File: modifier.encode.php * Type: modifier * Name: encode * Purpose: mb_convert_encoding wrapper * ------------------------------------------------------------- */ function smarty_modifier_encode($string, $to, $from = '') { if ( empty($from) ) { return mb_convert_encoding($string, $to); } else { return mb_convert_encoding($string, $to, $from); } } ?>
を、modifier.encode.phpという名前で保存して、Smartyのpluginフォルダに入れる。
使い方は
{$var|encode:"TO":"FROM"}
みたいな感じで(TOとFROMは文字セット名)
使い方の例として、Wikipediaの検索結果画面のURLは
http://ja.wikipedia.org/wiki/%E7%89%B9%E5%88%A5:Search?search={キーワード}&go=%E8%A1%A8%E7%A4%BA
って感じだけど、ここのキーワードはUTF-8にしないといけないので、例えばSJISで書かれたサイトで普通に
http://ja.wikipedia.org/wiki/%E7%89%B9%E5%88%A5:Search?search={$var|escape:"url"}&go=%E8%A1%A8%E7%A4%BA
とやっても文字化けする(はず)なので、このプラグインを使って
http://ja.wikipedia.org/wiki/%E7%89%B9%E5%88%A5:Search?search={$var|encode:"UTF-8":"SJIS"|escape:"url"}&go=%E8%A1%A8%E7%A4%BA
とすると解決する。