iモードの絵文字を検出する正規表現
    このエントリをはてなブックマークに登録

2007/10/29 月曜日 matsui Posted in DoCoMo, PHP No Comments »

iemoji_regex

入力フォームから絵文字を入力された場合、
それをDB格納にする際や表示時に、文字化けすることがあります。

本記事では、PHPから絵文字を検出し、事前に入力エラーを出したり、
絵文字を除去したりする方法をご紹介します。
今回はまず、ドコモのiモード絵文字編です。

 

以下が絵文字を検出するサンプルです。

$in_string = $_POST['in'];	// 入力された値

$sjis  = '[\\x81-\\x9F\\xE0-\\xF7\\xFA-\\xFC][\\x40-\\x7E\\x80-\\xFC]
|[\\x00-\\x7F]|[\\xA1-\\xDF]';	// 実際には1行で入力
$emoji = '[\\xF8\\xF9][\\x40-\\x7E\\x80-\\xFC]';
$pattern = "/\\G((?:$sjis)*)(?:($emoji))/";

if (preg_match($pattern, $in_string)) {
	echo '絵文字が含まれています';
} else {
	echo '絵文字は含まれていません';
}

$in_stringに判定したい文字列を入れてください。
$sjisがSJIS判定用の正規表現、$emojiが絵文字を表す正規表現です。
(表示の都合上、改行されていますが、実際は1行で入力することにご注意ください)
それらを組み合わせた、$patternが絵文字かどうかを判定する正規表現になります。

 

続いて絵文字除去のサンプルです。

$in_string = $_POST['in'];	// 入力された値

$sjis  = '[\\x81-\\x9F\\xE0-\\xF7\\xFA-\\xFC][\\x40-\\x7E\\x80-\\xFC]
|[\\x00-\\x7F]|[\\xA1-\\xDF]';	// 実際には1行で入力
$emoji = '[\\xF8\\xF9][\\x40-\\x7E\\x80-\\xFC]';
$pattern = "/\\G((?:$sjis)*)(?:($emoji))/";

preg_match_all($pattern, $in_string, $arr);
$search = $arr[2];	// $arr[2]に対象絵文字が格納される

// 絵文字除去
$out_string = str_replace($search, array(), $in_string);

// 出力
echo $out_string;

 

動作の確認は、先日ご紹介したi絵文字を使って、PCブラウザからも行うことができますが、Firefoxなどのブラウザでは、絵文字がエンティティ化されてしまうことがありますので注意しましょう。

なお、絵文字判定の正規表現は次のサイトを参考にさせていただきました。
素敵な情報をありがとうございます。
→ CGIぽん モバイルCGI研究(i-mode編) i-mode 絵文字の処理

今回のサンプルはPHPのものでしたが、上記サイトではPerlを例にして記事が書かれています。
Perl利用者の方は参考になるのではないでしょうか。

他キャリアの絵文字の扱いについては、また後日ご紹介したいと思います。

 

関連:



Windowsでiモード絵文字を表示・入力するには
    このエントリをはてなブックマークに登録

2007/10/28 日曜日 matsui Posted in DoCoMo, ソフト紹介 No Comments »

通常PCでは絵文字を表示することはできません。
しかし、それではケータイページを作成したり、メールの原稿を書いたりするときに、
非常に不便です。

そこで、ドコモ公式サイトで公開されている、「i絵文字」をインストールすることにより、
Windows上でも絵文字を表示・入力できるようにします。

ダウンロードはこちらのページから行えます。

→ NTT DoCoMo 作ろうiモードコンテンツ 絵文字入力ソフト「i絵文字」

画面中部の「i絵文字のダウンロードへ」リンクをクリックし、ダウンロードします。
2007年10月11日にバージョンアップし、この記事執筆時点での最新バージョンは1.30です。
OSはWindows2000以降で動作するようです。

インストールは簡単で、ダウンロードしたファイルを解凍し、
Setup.exeをダブルクリックし指示に従うだけです。

インストール後、デスクトップにi絵文字のショートカットができます。
また、「スタートメニュー→プログラム→imodetool→i絵文字」からも起動できます。

初回設定時は外字設定用のダイアログが出ます。
こちらのページを参考に設定を行います。
基本的にファイルを一つ選択しOKを押すだけ簡単です。

上記設定を行うと無事起動するはずです。

iemoji_install1.png

このままでは小さくて使いづらいので、2倍表示にしておきましょう。

iemoji_install2.png

あとは、入力したい場所に絵文字をドラッグするか、入力したい場所にあらかじめカーソルを合わせ、絵文字をクリックすれば絵文字が入力できます。

なお、ファイル→設定メニューから、Shift-JIS形式(そのまま絵文字が見える形式)と、Unicode形式(&#xXXXX形式)のどちらで入力するかを選択できます。

iモード絵文字の記述方法についてはこちらに詳しく書いてあります。

→ NTT DoCoMo 作ろうiモードコンテンツ 絵文字記述方法

 

他キャリアの絵文字入力方法や、MacOSでの絵文字入力方法については、後日ご紹介したいと思います。

 

関連: