※スパム編集が多いため一時凍結させていただきます 目次 概要 †iモード向けコンテンツの仕様詳細についてはページ下部に、公式サイトへのリンクがはってありますのでそちらを参考にして下さい。 概要としては次の通りです。
技術情報 †iモード対応HTMLのバージョンと機種について †公式サイトのこちらのページをご覧下さい。
各HTMLバージョンの違いについてはこちらで説明しています。 表示できるHTMLの条件 †作成待ち PCでは使えるけどiモードでは使えないタグ †作成待ち iモード独自のタグ †作成待ち ツールをダウンロードしよう †
絵文字について †501iの時代のころは、絵文字はエンティティ形式(&#xx;)形式で使用しないと文字化けしましたが(P501以外の機種?)、現在の機種ではどちらの方式でも使用できます。 入力方式は3通りあります。
2番目の方式は公式サイトでは「推奨しません」となっていますが、3番目の方式は対応機種の面で使い物にならず、結局使わざるを得ないでしょう。 絵文字の一覧はこちらにありますが、i絵文字やその他の絵文字エディタを使ったほうがわかりやすいと思います。 iモード絵文字のコードは1バイト目が「F8」または「F9」となっています。 参考コード perl版 # iモードの絵文字コードから10進コードに変換 $sjis = '[\x81-\x9F\xE0-\xF7\xFA-\xFC][\x40-\x7E\x80-\xFC]|[\x00-\x7F]|[\xA1-\xDF]'; $emoji = '[\xF8\xF9][\x40-\x7E\x80-\xFC]'; $str =~ s/\G((?:$sjis)*)($emoji)/$1.'&#'.unpack('n',$2).';'/ego; # iモードの絵文字を10進コードからSJIS絵文字コードへ変換 $str =~ s/&#(63\d{3});/pack('n',$1)/eg; PHP版 // 絵文字コードから10進コードに変換 $converted = ''; if (preg_match("/[\xF8\xF9]./", $tpl_output)) { // 絵文字を含んでいる可能性がある場合のみ処理 for($i = 0; $i < (mb_strlen($tpl_output)); $i++) { $tgt = mb_substr($tpl_output, $i, 1); if (2 == mb_strwidth($tgt)) { // 2バイト文字の場合のみ処理 $tgt_arr = unpack("C*", $tgt); if(0xf8 == $tgt_arr[1] || 0xf9 == $tgt_arr[1]) { // 絵文字の場合(1バイト目のコードで判断) $hex = dechex($tgt_arr[1]) . dechex($tgt_arr[2]); $converted .= '&#' . hexdec($hex) . ';'; } else { $converted .= $tgt; } } else { $converted .= $tgt; } } } else { // 絵文字がないのでそのまま出力 $converted = $tpl_output; } // 上記と同じ処理を正規表現で処理(約3倍高速) // 絵文字コードから10進コードに変換 $sjis = '[\x81-\x9F\xE0-\xF7\xFA-\xFC][\x40-\x7E\x80-\xFC]|[\x00-\x7F]|[\xA1-\xDF]'; $emoji = '[\xF8\xF9][\x40-\x7E\x80-\xFC]'; $pattern = "/\G((?:$sjis)*)(?:($emoji))/"; // 絵文字を検索 preg_match_all($pattern, $tpl_output, $arr); // $arr[2]に対象絵文字が格納される // 絵文字を置換 $converted = $tpl_output; foreach($arr[2] as $value) { $pattern_rep = "$value"; $emoji_cd = unpack("C*", $value); $hex = dechex($emoji_cd[1]) . dechex($emoji_cd[2]); $replacement = '&#' . hexdec($hex) . ';';; $converted = mb_ereg_replace($pattern_rep, $replacement, $converted); } // iモードの絵文字を10進コードからSJIS絵文字コードへ変換 // 絵文字10進を検索 $pattern = "/&#(63\d{3});/"; preg_match_all($pattern, $tpl_output, $arr); // $arr[0]に対象絵文字が格納される // 絵文字に置換 $converted = $tpl_output; foreach($arr[0] as $value) { $pattern_rep = "$value"; $replacement = pack('n', substr($value, 2, 5)); $converted = mb_ereg_replace($pattern_rep, $replacement, $converted); } 参考にしたページ 2004-07-30 20:43:00 matsui 作成
2005-12-26 15:23:00 matsui 参考コード追加
認証について †公式サイトの場合は、GETパラメータに「NULLGWDOCOMO」という文字列を入れると、そこが自動的に個体識別情報(端末固有のコード)に置き換えられ、それを利用して認証を行えます。(非常に楽ですね) iモード対応HTML 3.0以降の機種(但しSO210i,SH251i,SH251iSを除く)では、フォームから個体識別情報が取得できます。 <html><body> <form action="./test.cgi" method="get" utn> <input type="submit" name="submit"> </form> </body></html> formタグの最後の"utn"がポイントです。 なおutn属性は、Aタグでも使用可能です。 <A href="test.cgi" utn> 上記のHTMLを使用すると、ユーザエージェントに次のような文字列が入ります。
このように「/serxxxxxxxxxxx」が追加されるので、ここから端末を特定できます。 FOMAの場合は、FOMA端末製造番号(15桁)とFOMAカード識別番号(20桁)が追加されます。 Perlの場合ですと $agent = $ENV{'HTTP_USER_AGENT'}; PHPの場合ですと $agent = getenv("HTTP_USER_AGENT"); といった形で利用できます。 携帯電話側にはアクセス時に なおD503i,D503iS, N2001,N2002ではこの機能を使う場合にはバグがあります。 留意事項(個体識別情報) 詳細な仕様は公式ページをご覧下さい。 2004-07-30 20:43:36 matsui 作成
メーラーを起動する方法と注意点 †作成待ち セッションについて †iモードではcookieがないため、cookieを使ったセッション管理は利用できません。 session.use_cookies = 0 session.use_trans_sid = 1 session.use_cookiesの設定は必ずしも変更しなくても良いのですが、PCからも同様の環境でデバッグできるようにcookieによるセッション管理はオフにすると良いとです。 2004-07-30 23:38:32 matsui 作成
FOMAではここが変わった †iモード対応XHTMLというのができた。 しかしFOMAのみの対応なのであまり使われていない。 残りは作成待ち リンク †
|