DoCoMo絵文字データ保存方法

携帯から入力された絵文字の判定を簡単に行う方法があるようです。mb_substitute_character();を使って存在しない文字コードを炙り出します。

携帯端末からの投稿を保存

PHP

  1. // 出力文字エンコーディングに文字コードが存在しない場合の代替文字を指定
  2. mb_substitute_character('long');
  3. // 太陽絵文字入り文字列
  4. $str = '今日も暑いですね・';
  5. // 強制的に絵文字部分がBAD+16進コードに変換される
  6. $str = mb_convert_encoding($str, mb_internal_encoding());
  7. // 絵文字を[d:絵文字コード]に変換して保存
  8. $str = preg_replace('/BAD\+(F[89][0-F]{2})/''[d:$1]', $str);

こうしておけば[d:~]を探して変換すれば、PCには絵文字画像、携帯には直接絵文字を表示させる事ができる。記事の修正が必要になっても絵文字を意識しなくて済みます。

保存ログを携帯端末へ出力

PHP

  1. $str = '今日も暑いですね[d:F8A0]';
  2. $str = preg_replace('/\[d:(F[89][0-F]{2})\]/e'"pack('H*', $1)", $str);
  3. print $str;

まとめ

BAD+からF3、F4、F6、F7で始まる文字列を調査すればAU絵文字も判別可能らしい。めちゃくちゃ楽だな、これ。

参考文献

絵文字の抽出をPHPで最も簡単にする方法 ぎじゅっやさん

コメントは受け付けていません。