zend frameworkでMobilePictogramConverter

PHP

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へ絵文字を復元したときに絵文字をエスケープする

コメント