iモード絵文字をUnicode形式からSJIS形式に逆変換するPHPサンプル
    このエントリをはてなブックマークに登録

2007/11/24 土曜日 matsui Posted in DoCoMo, PHP | No Comments »

昨日ご紹介した「iモード絵文字をSJIS形式からUnicode形式に変換するPHPサンプル」に続き、Unicode形式からSJIS形式への逆変換のサンプルPHPをご紹介します。

このような変換を施すことで、バイト数を削減できますし、i絵文字などがインストールされているPCでは絵文字を表示できるため、管理画面などでの利用に便利です。

 

$str = '絵文字コードを含む文字列';

// iモード拡張絵文字(Unicode形式)を検索
$pattern = '/&#x(E6[3-F][0-9A-F]|E7[0-5][0-9A-F]);/';
preg_match_all($pattern, $str, $arr); // $arr[0]に対象絵文字が格納される

// 絵文字に置換
$rep_arr = array();
foreach($arr[0] as $value) {
	$hex = substr($value, 3, 4);
	$dec = hexdec($hex);
	if (58942 <= $dec AND $dec <= 59035) {
		// 絵文字No.1 ~ No.94
		$dec = $dec + 4705;
	} elseif (59099 <= $dec AND $dec <= 59223) {
		// 絵文字No.118 ~ No.166、拡1~拡76
		$dec = $dec + 4773;
	} elseif ((59036 <= $dec AND $dec <= 59045) OR
		(59052 <= $dec AND $dec <= 59054) OR
		(59057 <= $dec AND $dec <= 59059) OR
		(59063 <= $dec AND $dec <= 59066) OR
		(59086 <= $dec AND $dec <= 59098)) {
		// 絵文字No.95 ~ No.117、No.167 ~ No.176
		$dec = $dec + 4772;
	} else {
		continue;
	}
	$rep_arr[$value] = pack('n', $dec);
}

// 置換処理
$str = strtr($str, $rep_arr);

// 出力
echo $str;

※ソースはSJISで記述してください。

実行例:
iemoji_conv2.gif

 

関連:




iモード絵文字をSJIS形式からUnicode形式に変換するPHPサンプル
    このエントリをはてなブックマークに登録

2007/11/23 金曜日 matsui Posted in DoCoMo, PHP | 3 Comments »

今回は、iモード絵文字をSJISバイナリ形式から、Unicodeテキスト入力(&#xxxx;)形式に変換するPHPのサンプルコードをご紹介します。

文字コード変換や、DBに格納する際など、SJISバイナリ形式では、文字化けなどの問題が起こるケースが多々あります。
そんな時には下記のコードでUnicodeテキスト入力形式に変換することで、データがぐっと扱いやすくなります。

 

$str = '[SJISバイナリ絵文字コードを含む文字列]';

// 文字コードを設定
mb_internal_encoding('SJIS');
mb_regex_encoding('SJIS');

// 正規表現を定義
$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, $str, $arr); // $arr[2]に対象絵文字が格納される

// 絵文字を置換
$rep_arr = array();
foreach($arr[2] as $value) {
	$emoji_cd = unpack("C*", $value);
	$hex =  dechex($emoji_cd[1]) . dechex($emoji_cd[2]);
	$dec = hexdec($hex);
	if (63647 <= $dec AND $dec <= 63740) {
		// 絵文字No.1 ~ No.94
		$dec = $dec - 4705;
	} elseif (63872 <= $dec AND $dec <= 63996) {
		// 絵文字No.118 ~ No.166、拡1~拡76
		$dec = $dec - 4773;
	} elseif ((63808 <= $dec AND $dec <= 63817) OR
		(63824 <= $dec AND $dec <= 63826) OR
		(63829 <= $dec AND $dec <= 63831) OR
		(63835 <= $dec AND $dec <= 63838) OR
		(63858 <= $dec AND $dec <= 63870)) {
		// 絵文字No.95 ~ No.117、No.167 ~ No.176
		$dec = $dec - 4772;
	} else {
		continue;
	}
	$replacement = '&#' . strtoupper(dechex($dec)) . ';';
	$str = mb_ereg_replace($value, $replacement, $str);
}

// 置換処理
$str = strtr($str, $rep_arr);

// 出力
echo $str;


※ソースはSJISで記述してください
※表示の都合上改行を入れている行があることにご注意ください

実行例:
iemoji_conv1.gif

逆変換(Unicode形式→SJIS形式)のサンプルは、また後日ご紹介させていただきます。

追記:
逆変換の記事も書きました。下記リンクをご参照ください。

 

関連:




キャリア情報の更新をチェックするの便利なFirefoxアドオン「Page Update Checker」
    このエントリをはてなブックマークに登録

2007/11/22 木曜日 matsui Posted in ソフト紹介 | No Comments »

携帯サイトを運営する上で、キャリア公式情報の定期チェックは欠かせません。
IPアドレス帯域の変更、新機種の発売、新しい技術情報の公開、などなどを定期的にチェックしないといけないからです。
特にIPアドレス帯域は、「ケータイからのみアクセス許可」としている場合、アクセスできないユーザが出てきてしまうので、毎日チェックしなければならず、かなり大変です。

今回はそんな手間を軽減するFirefoxアドオンをご紹介します。

 

「Page Update Checker」は、ページの更新がないかを定期的にチェックしてくれるFirefoxアドオンです。
当然Firefoxが立ち上げないとチェックはかかりませんが、普通の人であれば、ブラウザを立ち上げない日などないでしょう。

ダウンロード&インストールはこちらから行えます。

→ Firefox Add-ons Page Update Checker

上記ページ中央の「インストール」ボタンを押すと、アドオンインストール用のウィンドウが開き、インストールが行えます。
なお、記事執筆時現在の最新バージョンは0.3.1です。

 

インストールが完了すると、「ツール」メニューに「更新の監視」というメニューが追加されますので、こちらを「監視したいページを表示した状態」で選択しましょう。

updatechk1.gif

下記はiモードのIPアドレス情報のページを、チェック対象にしようとしている例です。

updatechk2.gif

ここでチェック間隔やチェッカーの種類を変更できます。
チェッカーはJavaScriptで動作しており、変更することでチェックの挙動を変えることが出来ます。
バナーがある場合などは、ここでチェックの例外として登録することもできます。

ですが、各キャリアのページはシンプルな作りのため、Basicでほぼ問題なく動作するようです。

なお、キャリア各社のIPアドレス情報のURLは下記の通りです。




KDDIがデータ通信定額制プラン(月額6000円)を来月末スタート?
    このエントリをはてなブックマークに登録

2007/11/21 水曜日 matsui Posted in ニュース | No Comments »

公式アナウンスではありませんが、KDDIが月額6000円のデータ通信定額制プランを、来月末から始めるというニュースが出ています。

→ Yahooニュース KDDI データ通信、定額制プラン 月6000円、来月末導入 [yahoo.co.jp]
→ GIGAZINE KDDI、月額6000円のPC向け高速データ通信定額プランを年末に導入か [gigazine.net]

データ受信速度は最大3.1MBpsと、ドコモ定額データプランやイーモバイルの3.6Mbpsに比べると僅かに落ちますが、十分高速です。
エリアの広さがケタ違いですから、Willcomやイーモバイルは大打撃でしょうね。




ファミコンのROMファイルをiアプリに変換するサーバ
    このエントリをはてなブックマークに登録

2007/11/20 火曜日 matsui Posted in 記事紹介・リンク | 2 Comments »

開発とはあまり関係ないですが、一応iアプリもケータイ絡みということで、面白いのでご紹介します。
ファミコンのROMファイルを、iアプリに変換するサーバが公開されているようです。

→ NES2FOMA [crazyworks.jp]
→ CNET Venture View ファミコンのROMファイルをiアプリに変換するサーバを公開します [cnet.com]
→ GIGAZINE ファミコンソフトをFOMA向けiアプリに変換してくれる「NES2FOMA」 [gigazine.net]

対応機種はFOMA全機種、推奨は902/702以降とのことです。
ずいぶん危険な香りがしますが、法的には問題ないのでしょうか?