091117-emoji

先日、PHPでドコモの絵文字を出力する方法でスッタモンダしてしまいました。せっかくなのでそのドコモの絵文字をPHPで出力する方法を明記しておきます。PHPでドコモの絵文字を表示させる時に参考になればと思います。

ドコモの絵文字を出力する場合、下記の3つの文字コードがあります。

  1. S-JISコード(16進数)
  2. S-JISコード(10進数)
  3. Unicode

これらコードはドコモのページに明記されています。

ドコモで提供している絵文字ツールを使用すれば固定文字を表示することはできますが、コードを使用して出力したい場合もあるでしょう。その方法はまず、ドコモのページで該当する絵文字のS-JISコード(16進数)を調べます。ここでは上記と同じ晴れマークとすると値は「F89F」です。この値をバイナリで入力するには下記ソースで表示できます。

echo pack('C', 0xF8).pack('C', 0x9F);

ここで使用しているpack関数というのは

データをバイナリ文字列にパックする

関数なのですが、引数で使用しているフォーマットオプションの「C」は「unsigned char」(符号なしの文字)です。

ここまではちょっと調べると比較的簡単にわかるのですが、、「F89F」を文字列で受け取った時はどうすればいいのかがわからずちょっと悪戦苦闘してしまいました(^^ゞ

その結果、下記コードで絵文字を表示することができました。

$char = "F89F";
$a = hexdec("0x".substr($char, 0, 2));
$b = hexdec("0x".substr($char, 2, 2));
echo pack('C', $a).pack('C', $b);

ソースを見てみれば特に難しいことではないのですが、頭が硬いせいか結構時間が掛かってしまいました。(^^ゞ

この方法以外にももっと良い方法があるかもしれません。もし御存知の方がいらっしゃいましたら頭の硬い私に教えてくださいね(^_-)

PHP×携帯サイト デベロッパーズバイブル

価格¥3,080

順位1,798,648位

荒木 稔

発行ソフトバンククリエイティブ

発売日2008/09/27

Amazonを開く

Supported by amazon Product Advertising API