最終更新: 2009-12-09 (水) 07:06:44
このページをDeliciousに追加35 users このページをはてなブックマークに追加 このページをlivedoor クリップに追加 このページをYahoo!ブックマークに追加

目次

概要

HTML_Emoji は携帯の絵文字を変換するライブラリです。 PHP 4 以上で動作します。

  • 機能
    • docomo, au, SoftBank の3キャリアの絵文字に対応 (隠し絵文字にも対応)
    • 他キャリアの絵文字を、類似の絵文字に変換可能
    • PCでは gif 形式の画像に変換して表示
    • 絵文字の入出力は、UTF-8, Shift_JIS のバイナリ形式
    • 文字エンコーディングを UTF-8 と Shift_JIS 間で相互に変換可能
    • User Agent からキャリアを自動判別 (キャリアを指定することも可能)
  • 特徴
    • 使い方が簡単
    • 3キャリアの絵文字が混在したテキストを扱える
    • 他の類似ライブラリと比べて処理が高速 (ベンチマーク)

イメージとしては、Perl の Encode::JP::Mobile モジュールに近いです。 フォームに入力された絵文字を処理したり、 携帯宛の絵文字メールを作成したりするのに使えるはずです。

サンプル

動作確認のためのサンプルをいくつか用意しました。 PC や携帯から読み書きしてみて下さい。

PC での動作確認には、以下のソフトウェアを使うと便利です。

なお、FireMobileSimulator での動作確認は行ってありますが、 携帯実機での動作確認はまだ不十分な状態です。 不具合と思われる現象を見つけたら、報告をお願いします。

 

イー・モバイルの端末 (H11T のモバイルブラウザ, H11HW, H12HW) をお持ちの方がいましたら、上の UTF-8 と Shift_JIS のサンプルが表示できるかどうか、機種名と共に教えていただけると幸いです。

使い方

本ライブラリは、次のような使い方をすることを想定しています。

  • 入力された絵文字は UTF-8 のバイナリに変換して保存
  • ソフトバンクの 3G 端末では UTF-8 のまま表示
  • その他の携帯では Shift_JIS に変換して表示

フォームから入力された絵文字は、 mb_convert_encoding() 関数の代わりに convertEncoding() メソッドを使うことで、 UTF-8 に変換できます。

// ライブラリの読み込み
require_once 'HTML/Emoji.php';

// 現在の端末用の HTML_Emoji オブジェクトを作成
$emoji = HTML_Emoji::getInstance();

// 入力データの文字エンコーディングを UTF-8 に変換
$data = $emoji->convertEncoding($data, 'UTF-8', 'SJIS');

// データを保存
......

絵文字を含んだテキストを出力する際には、 convertCarrier() メソッドを使うことで、 現在の端末で表示できる形に絵文字が変換されます。

// ライブラリの読み込み
require_once 'HTML/Emoji.php';

// 現在の端末用の HTML_Emoji オブジェクトを作成
$emoji = HTML_Emoji::getInstance();

// PC で表示する際に用いる画像ファイルの URL を指定
$emoji->setImageUrl('images/');

// 他キャリアの絵文字を変換する際、半角カナを用いるよう設定
$emoji->useHalfwidthKatakana();

// データの読み込み
$data = ......

// 他キャリアの絵文字を、現在の端末用に変換
$data = $emoji->convertCarrier($data);

// 出力データの文字エンコーディングを Shift_JIS に変換
$data = $emoji->convertEncoding($data, 'SJIS', 'UTF-8');

isUtf8Carrier() メソッドは、 SoftBank の 3G 端末や PC なら true、それ以外なら false を返します。 isSjisCarrier() メソッドは、その逆の値を返します。 これらのメソッドを用いると、 次のように場合分けの処理を書くことができます。

// Shift_JIS で入出力すべき端末なら、文字エンコーディングを変換
if ($emoji->isSjisCarrier()) {
    $data = $emoji->convertEncoding($data, 'SJIS', 'UTF-8');
}

examples ディレクトリに幾つかのサンプルが含まれていますので、 そちらも参考にして下さい。

注意事項

現バージョンでは、次のような仕様があります。

  • 数値文字参照での絵文字の入出力には対応していません。
  • WILLCOM のケータイモード、及び絵文字を使えるイー・モバイルの端末は、docomo の携帯として扱います。
  • iPhone では、PC と同様に画像ファイルを使って表示します。

ライセンス

ライブラリ本体は MIT ライセンスです。

 

画像ファイルの利用条件については、配布元の 携帯絵文字対応BBS のページ をご覧下さい。基本的には自由に利用できますが、 SoftBank 絵文字を営利目的でホームページ、ソフトウェア、書籍等で利用される場合は、 事前に SoftBank へ届け出をする必要があるそうです *1

ダウンロード

更新履歴

  • Version 0.7 (2009/07/06)
    • factory() メソッドを getInstance() メソッドに変更
    • setImagePath() メソッドを setImageUrl() メソッドに変更
    • useHalfwidthKatakana() メソッドを追加
    • isMobile() メソッドを追加
    • docomo への変換で、< と > の記号は HTML エスケープするように変更
    • include_path が通っていないと SoftBank 2G 端末でエラーになっていたのを修正
  • Version 0.6 (2009/06/29)
    • 文字エンコーディングの変換時に、機種依存文字も変換されるように修正 *2
  • Version 0.5 (2009/06/23)
    • au, SoftBank の絵文字を Shift_JIS → UTF-8 に変換するのに失敗する場合があったのを修正
    • include_path の通ったディレクトリにインストールしないと使えなかったのを修正
  • Version 0.4 (2009/06/21)
    • isSjisCarrier()、isUtf8Carrier() メソッドを追加
  • Version 0.3 (2009/06/17)
    • 絵文字を使えるイー・モバイルの端末は、docomo の携帯として扱うように変更
    • 将来の拡張用に、HTML_Emoji_Willcom, HTML_Emoji_Emobile クラスを作成
      (現在は HTML_Emoji_Docomo クラスを継承しているだけで、使っていません)
    • docomo → au への変換で、ウェブ用の変換ルールが混ざっていたのを、メール用の変換ルールを用いるよう統一
    • docomo → SoftBank への変換で、No.159, 160 の絵文字が半角になっていたのを全角に修正
  • Version 0.2 (2009/06/14)
    • SoftBank の Shift_JIS → UTF-8 の変換に対応
    • SoftBank の UTF-8 → Webコード の変換に対応
    • SoftBank の 2G 端末には Webコードを送出するように変更
    • PC 用の絵文字変換テーブルのフォーマットを変更
    • au の blankhalf, blankquarter の画像を、他の絵文字と同じ幅で表示していたのを修正
  • Version 0.1 (2009/06/10)
    • 初公開

今後の予定

今後は、次のようなスケジュールで進めていく予定です。

  • バージョン 1.0 のリリース
  • PHP 5 専用ライブラリへの移行
  • openpear への登録

ある程度まとまったところでバージョン 1.0 をリリースし、 それを PHP 4 用ライブラリの最終バージョンとします。 openpear には、PHP 5 用に書き直したものを登録しようと考えています。

 

バージョン 1.0 をリリースした後は、 PHP 4 版はバグ修正のみを行い、機能追加などは行わないつもりなので、 意見や要望などがある方は早めに言っていただけるようお願いします。

参考ページ

*1 http://creation.mb.softbank.jp/web/web_pic_about.html
*2 SoftBank の Shift_JIS → UTF-8 の変換は機種依存文字に未対応ですが、実際にはこの変換を使うことはないはずです。

(Counter:16468, Today:78, Yesterday:64)
トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   最終更新のRSS