zend frameworkで絵文字表示を行うために、MobilePictogramConverterを使いました。
説明は少なめで、コードと状態表示をメインに書きます。
すでに、ページができあがっているという仮定で書きます。
背景
- 絵文字出したい。PCで見たら絵文字を画像で出したい。
- 自分で実装したライブラリあるけど、昔に作ったから使い方忘れた。
- MobilePictogramConverter使うと楽にできる。
- zend frameworkの公式ドキュメントにはoutput filterの説明が無いので、ここにあるやる方行えばoutput filterを実装できる。
Thanks! > http://ishouldbecoding.com/2008/06/04/output-filters-in-zend_view
環境
- バージョン1.7.4で行いました。
- 基本携帯向けのサイト。
- 全部UTF-8
ディレクトリ構成
MobilePictogramConverterはlibrary以下に展開します。
Dandというのは、今作っているアプリケーション名なので、適宜ご自分の環境に合わせて変更してください。
library/MobilePictogramConverter.php ←MobilePictogramConverter library/Carrier/* ←MobilePictogramConverter library/Dand/Controller/Action.php ←これから作る library/Dand/View/Filter/Emoji.php ←これから作る application/controllers/IndexController.php ←表示用Controller public/_common/images/mobile/* ←MobilePictogramConverterの画像ファイル
library/Dand/Controller/Action.php
<?php class Dand_Controller_Action extends Zend_Controller_Action { public function init() { parent::init(); $this->_helper->layout->getLayoutInstance()->getView() ->addFilterPath('Dand/View/Filter', 'Dand_View_Filter_')->addFilter('Emoji'); } }
library/Dand/View/Filter/Emoji.php
<?php class Dand_View_Filter_Emoji { public function filter($string) { $mpc = MobilePictogramConverter::factory($string, MPC_FROM_FOMA, MPC_FROM_CHARSET_UTF8, MPC_FROM_OPTION_WEB); $mpc->setImagePath('/_common/images/mobile/'); return $mpc->autoConvert(); } }
application/controllers/IndexController.php
上で作ったclassを継承。
class IndexController extends Dand_Controller_Action
HTMLテンプレートに、Unicodeのコードで絵文字の参照を書いてく。
す<br /> ご<br /> い
DoCoMoの絵文字Unicode表記は参考。
http://www.unicode.org/~scherer/emoji4unicode/20090206/full.html
ブラウザで表示するとこうなる。
まとめ
- 楽して携帯向けサイト作れる
- 今後:Formに入力された絵文字のデコード
- 今後:PCでformへ絵文字を復元したときに絵文字をエスケープする
Comments