質問: いつもお世話になっております。 FPなどで入力できる、絵文字の変換ライブラリについて質問させていただきたいです。 こちらの環境や、困っている点などを以下に記載します。 同じような点で困った経験がある方がいらっしゃいましたら、是非教えていただきたいです。 お手数おかけしますが、よろしくお願いいたします。 環境 --- * PHP: ver5.6 問題点 ---- 現在、業務でFP・SP・PC全対応のサイトを作成しているのですが、 絵文字の表示に困っております。 例えばドコモ端末で入力した絵文字を、他キャリアで表示する場合(例えばAU端末やandroid端末)、 「外部のライブラリを使って文字コードを変換し、近い絵文字を表示する」といった処理を行っています。 この処理自体はうまく行っているのですが、 使っているライブラリが一部対応していない文字コードがあるようで、 「一部の絵文字を他キャリアで表示しようとすると、表示が化けてしまう」 といった現象が発生します。 実際に使っているライブラリは、HTML_Emojiというライブラリになります。 こちらのライブラリの最終更新日を確認した所、2011/01/29が最終更新日となっておりました。 内部実装を見たところ、文字コードの変換テーブルで、こちらがサポートしてほしい文字コードが不足しておりました。 > > 具体例: > > 例えば、2012年5月にリリースされた、K011という端末の、 > > 各絵文字の文字コードを調べた所、HTML_Emojiライブラリでは対応できていないようでした。 > > > 対策 --- 自前で文字コードの変換テーブルを定義するわけにも行きませんので、 HTML_Emojiライブラリに変わる別のライブラリを使うことで、対処する形になるかと思います。 最新の絵文字に対応しているPHPライブラリなどありましたら、是非教えていただきたいです。 お手数おかけしますが、よろしくお願いいたします。
回答: ガラケーへの対応方法も、もはやロストテクノロジーと化しそうな感がありますが...おつかれさまです。 さて、「携帯絵文字への対応」ですが、じつはPHP 5.4以上には、`SJIS-Mobile#DOCOMO`、`SJIS-Mobile#KDDI`、`SJIS-Mobile#SOFTBANK`、`UTF-8-Mobile#DOCOMO`、`UTF-8-Mobile#KDDI-A`、`UTF-8-Mobile#KDDI-B`、`UTF-8-Mobile#SOFTBANK`、`ISO-2022-JP-MOBILE#KDDI`というようなエンコーディングが標準で用意してあって、`mb_convert_encoding`などで使うことができます。 * PHPマニュアル: サポートされる文字エンコーディング * Qiita: PHPのmb_convert_encodingを使って、絵文字を表示 とはいえ、実機で見ないとわからないのがつらいところです。