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







