PHPでソフトバンク絵文字(ウェブコード)を取り除く方法
    このエントリをはてなブックマークに登録

先日ご紹介した「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がつかない端末があるためです。*

先日ご紹介したこちらの方法と、上記サンプルコードを併用することで、全ての絵文字が取り除けるはずです。

* 対応する機種が手元にないため実機での確認が取れていません。
 もしお手持ちの方がいましたら、検証のご協力をお願いします。

 

関連:


 

最近の記事







One Response to “PHPでソフトバンク絵文字(ウェブコード)を取り除く方法”

  1. 手元で未確認なので質問、という形になるのですが教えて下さい。

    以下のサイトによると、絵文字を「3GC型端末で送信すると得体の知れない(一意ではない)コードで送出してきます。」との事なのですが、こちらのコードでそういった絵文字も削除可能なのでしょうか?
    http://mobilehacker.g.hatena.ne.jp/clouder/?of=10

    もし、確認できる環境の方いらっしゃいましたらお願いいたします。

コメントを書く