絵文字活用術その2::絵文字変換の概要

By uchida - 08/09/11 - このエントリをはてなブックマークに追加このエントリをYahoo!ブックマークに追加このエントリをdel.icio.usに追加このエントリをFC2ブックマークに追加

絵文字を変換するにあたり、セルバではPC上で管理するため特殊文字[絵**]と変換します。
今回はその特殊文字に変換する処理の流れを解説します。

■絵文字をPC管理用に変換する
まず、各キャリアから送信された絵文字をPC管理用絵文字コードに変換します。

携帯サイトから絵文字を送信
        ↓
プログラムで絵文字を特殊文字に変換します。
例>>docomoの絵文字コード63669を[絵27]に変換します。
        ↓
サイト側で管理用絵文字コードとして[絵**]を管理します。

これら一連の処理は出来るだけ、プログラムの入り口で行ったほうが良いでしょう。
Zendフレームワークの場合は、コントローラーを継承してInit()やpreDispatch()で処理すると、後は何も気にせずに済むので便利です。
例//

/* 携帯用コントローラー */
class My_Controller_Action_Mobile extends Zend_Controller_Action
{
    public function init()
    {
        // パラメーター取得
        $params  = Zend_Controller_Action::_getAllParams();

        // 絵文字変換
        $value = self::emojiEncode($params);
    }
            .
            .
            .

■管理用絵文字コードを各キャリア用に変換する
出力するキャリアを判別します。
 ↓       ↓
 ↓  PCから接続された場合は、IMGタグで画像を表示する
 ↓
キャリアを判別し、各キャリアごとの絵文字コード出力リストで絵文字コードに変換します。

ユーザーエージェントで各キャリアに判別されなかった場合は、HTMLのイメージタグで絵文字画像をそのまま表示させます。
これはサイトを運用するにあたり、PCから接続された時にも対応するためです。この場合、絵文字画像を予め用意して管理しておく必要があります。

これら一連の処理は出来るだけ、プログラムの最後で行ったほうが良いので、
Smartyでサイトを構築される場合は、Smartyクラスを継承してdisplay()の中で処理するのが良いでしょう。
例//

class My_Smarty extends Smarty
{
    public function displayMb($tpl_file)
    {
        // テンプレート読み込み
        $tpl_html = $this->fetch($tpl_file);

        //絵文字出力
        $tpl_html = My_Emoji::decode($tpl_html);

    //テンプレート出力
       print $tpl_html ;
    }
            . 
            .
            .

以上、絵文字変換の概要でした。詳細など、コーディングを含めた解説は後日行いたいと思います。