PHPでソフトバンク絵文字(ウェブコード)を取り除く方法
Tweet
先日ご紹介した「PHPを使ってたった2行で絵文字を取り除く方法」の補足です。
「mb_substitute_character」を使った絵文字除去方法では、ソフトバンクの絵文字を除去しきれない場合があります。
SJIS形式以外にも、ウェブコードでフォーム値を送ってくる端末もあるためです。
それらを除去するためのサンプルコードはこちらです。
ソフトバンク絵文字(ウェブコード)除去サンプル
$in_string = '絵文字$G!削除';
$pattern = '/[\\x1B][\\x24][G|E|F|O|P|Q][\\x21-\\x7E]+([\\x0F]|$)/';
preg_match_all($pattern, $in_string, $arr);
$search = $arr[0]; // $arr[0]に対象絵文字が格納される
// 絵文字除去
$out_string = str_replace($search, array(), $in_string);
// 出力
echo $out_string;
※Blog上ではソフトバンク絵文字が表示できないため、正しく入力しなおしてください。
正規表現の最後が、x0Fまたは$となっているのは、古い機種の中に端末のバグで、絵文字で終わっている場合に末尾のx0Fがつかない端末があるためです。*
先日ご紹介したこちらの方法と、上記サンプルコードを併用することで、全ての絵文字が取り除けるはずです。
* 対応する機種が手元にないため実機での確認が取れていません。
もしお手持ちの方がいましたら、検証のご協力をお願いします。
関連:
12月 14th, 2007 at 0:17:26
手元で未確認なので質問、という形になるのですが教えて下さい。
以下のサイトによると、絵文字を「3GC型端末で送信すると得体の知れない(一意ではない)コードで送出してきます。」との事なのですが、こちらのコードでそういった絵文字も削除可能なのでしょうか?
http://mobilehacker.g.hatena.ne.jp/clouder/?of=10
もし、確認できる環境の方いらっしゃいましたらお願いいたします。