3キャリアの絵文字のマッチング(Shift_JIS -> UTF-8)

symfonyを利用して携帯サイトを制作していているんだけど、symfony内ではユーザの入力データをUTF-8で扱う必要があるので、UTF-8の絵文字のパターンマッチングが必要になった。

まぁ、もうUTF-8に対応していない機種は捨ててもいいかなとは思うんだが。


多分全部の絵文字を検出できるであろう正規表現のメモ
DoCoMoKDDIShift_JISで出力しているので、Shift_JIS -> UTF-8 での16進数表記になっている。
UTF-8なフォームから飛ばされた絵文字のデータの場合は、コードが違うので注意。

DoCoMo

/\xEE(?:\x98[\xBE\xBF]|\x99[\x80-\xBF]|\x9A[\x80-\xBA]|\x9B[\x8E-\xBF]|\x9C[\x80-\xBF]|\x9D[\x80-\x97])/

KDDI

/\xEE(?:\x88[\xB4-\xBF]|\x8d[\x80-\x82]|\x91[\xA8-\xBF]|\x97[\x80-\x9F]|[\x89-\x8C\x92-\x96][\x80-\xBF])/

SoftBank

/\xEE[\x80\x81\x84\x85\x88\x89\x8C\x8D\x90\x91\x94][\x80-\xBF]/