HTML_Emoji は携帯の絵文字を変換するライブラリです。 PHP 4 以上で動作します。
イメージとしては、Perl の Encode::JP::Mobile モジュールに近いです。 フォームに入力された絵文字を処理したり、 携帯宛の絵文字メールを作成したりするのに使えるはずです。
動作確認のためのサンプルをいくつか用意しました。 PC や携帯から読み書きしてみて下さい。
PC での動作確認には、以下のソフトウェアを使うと便利です。
なお、FireMobileSimulator での動作確認は行ってありますが、 携帯実機での動作確認はまだ不十分な状態です。 不具合と思われる現象を見つけたら、報告をお願いします。
イー・モバイルの端末 (H11T のモバイルブラウザ, H11HW, H12HW) をお持ちの方がいましたら、上の 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 ディレクトリに幾つかのサンプルが含まれていますので、 そちらも参考にして下さい。
現バージョンでは、次のような仕様があります。
ライブラリ本体は MIT ライセンスです。
画像ファイルの利用条件については、配布元の
携帯絵文字対応BBS のページ
をご覧下さい。基本的には自由に利用できますが、
SoftBank 絵文字を営利目的でホームページ、ソフトウェア、書籍等で利用される場合は、
事前に SoftBank へ届け出をする必要があるそうです
*1。
今後は、次のようなスケジュールで進めていく予定です。
ある程度まとまったところでバージョン 1.0 をリリースし、 それを PHP 4 用ライブラリの最終バージョンとします。 openpear には、PHP 5 用に書き直したものを登録しようと考えています。
バージョン 1.0 をリリースした後は、 PHP 4 版はバグ修正のみを行い、機能追加などは行わないつもりなので、 意見や要望などがある方は早めに言っていただけるようお願いします。