/** * UAがiPhone, iPod touchならtrueを返す。 * * @static * @access public * @param string $aua UAを指定するなら * @return boolean */ function isIPhoneGroup($aua = null) { static $cache_ = null; // 強制指定があればチェック if (isset($GLOBALS['_UA_force_mode'])) { // 移行の便宜上、効力を弱めている // return ($GLOBALS['_UA_force_mode'] == $GLOBALS['_UA_iphonegroup_query']); if ($GLOBALS['_UA_force_mode'] == $GLOBALS['_UA_iphonegroup_query']) { return true; } } $ua = $aua; // UAの引数が無指定なら、 if (is_null($aua)) { // クエリー指定を参照 if (UA::getQueryValue()) { //// 後方互換上、b=kでもiPhoneとみなすことを許す。 //if (!UA::isMobileByQuery()) { return UA::isIPhoneGroupByQuery(); //} } // (キャッシュするほどではないかも) // 引数のUAが無指定なら、キャッシュ有効 if (!is_null($cache_)) { return $cache_; } // クライアントのUAで判別 if (isset($_SERVER['HTTP_USER_AGENT'])) { $ua = $_SERVER['HTTP_USER_AGENT']; } } $isiPhoneGroup = false; // iPhone // Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3 // iPod touch // Mozilla/5.0 (iPod; U; CPU like Mac OS X; ja-jp) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A110a Safari/419.3 if (preg_match('/(iPhone|iPod)/', $ua) || UA::isAndroidWebKit($ua)) { $isiPhoneGroup = true; } // UAの引数が無指定なら、キャッシュ保存 if (is_null($aua)) { $cache_ = $isiPhoneGroup; } return $isiPhoneGroup; }