絵文字を変換するにあたり、セルバでは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 ; } . . .
以上、絵文字変換の概要でした。詳細など、コーディングを含めた解説は後日行いたいと思います。