CakePHP1.1でキャリアごとの絵文字を表示

9月 5th, 2008 admin Posted in CakePHP, PHP | コメントは受け付けていません。

すでにいろいろな方法があるようです。
CakePHPで3キャリア携帯の絵文字を表示する :: Webプログラマー+WebデザイナーなZARU日記(DB使用)
ひでぶろぐ CAKEPHP絵文字入力・出力ヘルパー(DB使用)
EmojiHelper - キャリアを意識せずに絵文字を出力できるCakePHPのHelperクラス - 芋ではない日記(JSON使用)

僕はDBを使うのが嫌だったのとJSONは使ったことがなかったのでMobilePictogramConverterという絵文字ライブラリがあるのでそれを使いました。

特徴
* DoCoMo, au, SoftBankの絵文字を相互変換可能
* 端末からサーバーへ送信された絵文字の変換が可能(掲示板など)
* SJIS/UTF-8に対応
* PCでの絵文字表示が可能(画像)
* 絵文字画像は全て透過GIFでアニメーションに対応
* DoCoMo隠し絵文字一部対応
* バイナリコード, Web入力コード, imgタグからの変換が可能
* 絵文字の削除が可能
* 文字列に含まれる絵文字の数を検出
* UserAgentからキャリアを判別し、キャリアに合った絵文字に自動変換が可能

すごいです。作った人。

手順

(1)MobilePictogramConverterを取得して解凍
(2)MobilePictogramConverterを/app/vendorsにいれる
(3)MobilePictogramConverterのimgをWEBROOT_DIR/img/m/にいれる
(4)/app/app_controller.phpを編集

PHP:
  1. <?php
  2. vendor('MobilePictogramConverter/MobilePictogramConverter');
  3.  
  4. class AppController extends Controller {
  5.  
  6.         //app_controllerのいろいろは省略
  7.  
  8.         function beforeFilter() {
  9.             ob_start();
  10.             parent::beforeFilter();
  11.         }
  12.  
  13.         function afterFilter() {
  14.             parent::afterFilter();
  15.  
  16.             // バッファを取得して、出力バッファをクリア
  17.             $out = ob_get_clean();
  18.  
  19.             if ((isset($this->params["webservices"]) && $this->params["webservices"] == "Mobile")) {
  20.                 $out = mb_convert_kana($out,"k","UTF-8");
  21.                 $mpc =& MobilePictogramConverter::factory($out, MPC_FROM_EZWEB, MPC_FROM_CHARSET_UTF8, MPC_FROM_OPTION_WEB);
  22.                 $mpc->setImagePath(WEBROOT_DIR . 'img/m/');
  23.                 $out = $mpc->autoConvert();
  24.             }
  25.  
  26.             echo $out;
  27.         }
  28. }
  29. ?>

バッファをためて一括で変換しています。絵文字と一緒に全角カナも半角カナに直してしまいます。
$this->params["webservices"]で判別しているのはShin x blogさんの「CakePHP 携帯用ビューを表示する」を使用して携帯のビューを切り替えているからです。

これで携帯のビュー内で>img localsrc="180"/<とかってやると絵文字が表示されます。

Comments are closed.