2020-10-28 追記
最新の PEAR::Net_UserAgent_Mobile 1.0.0 には、全てのi-mode機種情報が登録されています。
CDROM収録のdocomo_netuamobile.xml
を使う必要はありません。
7行目を削除してください。
修正前
7: $_SERVER['DOCOMO_MAP'] = dirname(__FILE__) . "/docomo_netuamobile.xml";
8: $agent = &Net_UserAgent_Mobile::factory();
9: $display = $agent->getDisplay();
Code language: plaintext (plaintext)
修正後
7:
8: $agent = &Net_UserAgent_Mobile::factory();
9: $display = $agent->getDisplay();
Code language: plaintext (plaintext)
2008-09-21
Smarty動的Webサイト構築入門の5.3 Smartyとケータイで、PEAR::Net_UserAgent_Mobileパッケージを使っています。このパッケージは外部ファイルからi-mode機種情報を読み込むことができます。本の付録CDROMに、筆者作成のdocomo_netuamobile.xmlを収録しました。
ところが、このdocomo_netuamobile.xmlには不具合があり、下から5~6行目の「SO902WP+」以降を正しく読み込みません。次の2点の修正が必要です。
1点目は、docomo_netuamobile.xmlです。「SO902IWP+」ではなく、「SO902IWPplus」とします。
2点目は、keitai_ini.phpを修正して、「SO902IWP+」自体を認識できるようにします。SO902IWP+の場合は、Net_UserAgent_Mobile内部の機種情報を使い、そうでない場合は、docomo_netuamobile.xmlを使うようにします。
修正前
7: $_SERVER['DOCOMO_MAP'] = dirname(__FILE__) . "/docomo_netuamobile.xml";
8: $agent = &Net_UserAgent_Mobile::factory();
9: $display = $agent->getDisplay();
修正後 7: if ( ! preg_match('/SO902IWP[+]/', $_SERVER['HTTP_USER_AGENT']) ) { 8: $_SERVER['DOCOMO_MAP'] = dirname(__FILE__) . "/docomo_netuamobile.xml"; 9: } 10: $agent = &Net_UserAgent_Mobile::factory(); 11: $display = $agent->getDisplay();