こんにちは。監督です。 前回のエントリの続きで、SmartyとHTML_Emojiを利用して絵文字変換を備えた簡単なPHPを組んでみます。

SmartyとHTML_Emojiは良きところに設置してくださいませ。 test.php(UTF-8で記述)

 
template_dir = './templates';
$smarty->compile_dir = './compile';

// regist smarty output filter
$smarty->register_outputfilter('my_outputfilter');

// emoji assign
$smarty->assign('testemoji', '');

// output
$smarty->display('test.html');


// output filter function
function my_outputfilter($template_source, &$smart)
{
    // include HTML_Emoji
    require_once 'HTML/Emoji.php';

    // HTML_emoji instance
    $emoji = HTML_Emoji::getInstance();

    // convert emoji
    $template_source = $emoji->filter($template_source, array('HexToUtf8', 'Carrier'));

    // convert charset
    $template_source = $emoji->convertEncoding($template_source, 'SJIS', 'UTF-8');

    return $template_source;

}

?>
test.htmlの中身(metaはSJISですが文字コードはUTF-8ですよ)
 
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS" />
<title>絵文字のテスト</title>
</head>

<body>

太陽&nbsp;&#xE63E;<br />
チョキ&nbsp;{$testemoji}<br />

</body>
</html>
いかがでしょうか? Smartyを元々使っているのであれば、outputfilterにHTML_Emojiをかませるだけで絵文字変換が出来てしまいます。理想を言えばcompile_dirをキャリア毎に分けたり、PCでは変換を行わないようにする処理を入れたりするのが良いのですが、とりあえず、ってことであればこれで充分だと思います。