public function canHandle($userAgent) { if (WURFL_Handlers_Utils::isDesktopBrowser($userAgent)) { return false; } return WURFL_Handlers_Utils::checkIfStartsWith($userAgent, 'Mozilla/5') && WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('iPhone', 'iPod', 'iPad')); }
public function canHandle($userAgent) { if (WURFL_Handlers_Utils::isDesktopBrowser($userAgent)) { return false; } return WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('iPhone', 'iPod', 'iPad')) && !WURFL_Handlers_Utils::checkIfContains($userAgent, 'Symbian'); }
public function canHandle($userAgent) { if (WURFL_Handlers_Utils::isDesktopBrowser($userAgent)) { return false; } return WURFL_Handlers_Utils::checkIfContains($userAgent, 'Android') && WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Opera Mobi', 'Opera Tablet')); }
public function normalize($userAgent) { // Normalize Android version $userAgent = preg_replace('/(Android)[ \\-\\/](\\d\\.\\d)([^; \\/\\)]+)/', '$1 $2', $userAgent); // Opera Mobi/Tablet $is_opera_mobi = WURFL_Handlers_Utils::checkIfContains($userAgent, 'Opera Mobi'); $is_opera_tablet = WURFL_Handlers_Utils::checkIfContains($userAgent, 'Opera Tablet'); if ($is_opera_mobi || $is_opera_tablet) { $opera_version = WURFL_Handlers_AndroidHandler::getOperaOnAndroidVersion($userAgent, false); $android_version = WURFL_Handlers_AndroidHandler::getAndroidVersion($userAgent, false); if ($opera_version !== null && $android_version !== null) { $opera_model = $is_opera_tablet ? 'Opera Tablet' : 'Opera Mobi'; $prefix = $opera_model . ' ' . $opera_version . ' Android ' . $android_version . WURFL_Constants::RIS_DELIMITER; return $prefix . $userAgent; } } // Stock Android if (!WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, $this->skip_normalization)) { $model = WURFL_Handlers_AndroidHandler::getAndroidModel($userAgent, false); $version = WURFL_Handlers_AndroidHandler::getAndroidVersion($userAgent, false); if ($model !== null && $version !== null) { $prefix = $version . ' ' . $model . WURFL_Constants::RIS_DELIMITER; return $prefix . $userAgent; } } return $userAgent; }
public function applyRecoveryMatch($userAgent) { if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('SLCC1', 'Media Center PC', '.NET CLR', 'OfficeLiveConnector'))) { return WURFL_Constants::GENERIC_WEB_BROWSER; } return WURFL_Constants::NO_MATCH; }
public function applyRecoveryMatch($userAgent) { if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Macintosh', 'Windows'))) { return WURFL_Constants::GENERIC_WEB_BROWSER; } return WURFL_Constants::NO_MATCH; }
public function canHandle($userAgent) { if (WURFL_Handlers_Utils::isDesktopBrowser($userAgent)) { return false; } return WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array("LGUPLUS", "lgtelecom")); }
public function canHandle($userAgent) { if (WURFL_Handlers_Utils::checkIfContainsAll($userAgent, array('Android', '/Kindle'))) { return false; } return WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Kindle', 'Silk')); }
public function canHandle($userAgent) { if (WURFL_Handlers_Utils::isDesktopBrowser($userAgent)) { return false; } return WURFL_Handlers_Utils::checkIfContains($userAgent, 'Android') && WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Fennec', 'Firefox')); }
public function canHandle($userAgent) { if (WURFL_Handlers_Utils::isDesktopBrowser($userAgent)) { return false; } return WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('HTC', 'XV6875')); }
public function canHandle($userAgent) { if (WURFL_Handlers_Utils::isDesktopBrowser($userAgent)) { return false; } return WURFL_Handlers_Utils::checkIfContains($userAgent, 'Nokia') && !WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Android', 'iPhone')); }
public function canHandle($userAgent) { if (WURFL_Handlers_Utils::isDesktopBrowser($userAgent)) { return false; } return WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Samsung', 'SAMSUNG')) || WURFL_Handlers_Utils::checkIfStartsWithAnyOf($userAgent, array('SEC-', 'SPH', 'SGH', 'SCH')); }
public function canHandle($userAgent) { if (WURFL_Handlers_Utils::isMobileBrowser($userAgent)) { return false; } return WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Thunderbird', 'Microsoft Outlook', 'MSOffice')); }
public function canHandle($userAgent) { if (WURFL_Handlers_Utils::isDesktopBrowser($userAgent)) { return false; } return WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Windows Phone', 'WindowsPhone', 'NativeHost')); }
public function normalize($userAgent) { if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('WPDesktop', 'ZuneWP7')) || WURFL_Handlers_Utils::checkIfContainsAll($userAgent, array('Mozilla/5.0 (Windows NT ', ' ARM;', ' Edge/'))) { $model = WURFL_Handlers_WindowsPhoneHandler::getWindowsPhoneDesktopModel($userAgent); $version = WURFL_Handlers_WindowsPhoneHandler::getWindowsPhoneDesktopVersion($userAgent); } else { if (WURFL_Handlers_Utils::checkIfStartsWithAnyOf($userAgent, array('Windows Phone Ad Client', 'WindowsPhoneAdClient'))) { $model = WURFL_Handlers_WindowsPhoneHandler::getWindowsPhoneAdClientModel($userAgent); $version = WURFL_Handlers_WindowsPhoneHandler::getWindowsPhoneVersion($userAgent); } else { if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'NativeHost')) { return $userAgent; } else { $model = WURFL_Handlers_WindowsPhoneHandler::getWindowsPhoneModel($userAgent); $version = WURFL_Handlers_WindowsPhoneHandler::getWindowsPhoneVersion($userAgent); } } } if ($model !== null && $version !== null) { // "WP" is for Windows Phone $prefix = 'WP' . $version . ' ' . $model . WURFL_Constants::RIS_DELIMITER; return $prefix . $userAgent; } return $userAgent; }
public function applyRecoveryMatch($userAgent) { if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('MIB/2.2', 'MIB/BER2.2'))) { return "mot_mib22_generic"; } return null; }
public function canHandle($userAgent) { if (WURFL_Handlers_Utils::isMobileBrowser($userAgent)) { return false; } return WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Opera', 'OPR/')); }
protected function compute() { $ua = $this->request->userAgentNormalized; $ua_original = $this->request->userAgent; // ->contains() can take an array if (WURFL_Handlers_Utils::checkIfContainsAnyOf($ua, $this->third_party_browsers)) { return false; } // Lollipop implementation of webview adds a ; wv to the UA if ($this->device->device_os == "Android" && strpos($ua_original, '; wv) ') !== false) { return true; } // Handling Chrome separately if ($this->device->device_os == "Android" && WURFL_Handlers_Utils::checkIfContains($ua, "Chrome") && !WURFL_Handlers_Utils::checkIfContains($ua, "Version")) { return false; } // iOS webview logic is pretty simple if ($this->device->device_os == "iOS" && !WURFL_Handlers_Utils::checkIfContains($ua, "Safari")) { return true; } // So is Mac OS X's webview logic if ($this->device->advertised_device_os == "Mac OS X" && !WURFL_Handlers_Utils::checkIfContains($ua, "Safari")) { return true; } if ($this->device->device_os == "Android") { if ($this->request->originalHeaderExists("HTTP_X_REQUESTED_WITH")) { $requested_with = $this->request->getOriginalHeader("HTTP_X_REQUESTED_WITH"); // The whitelist is an array with X-Requested-With header field values sent by known apps if (in_array($requested_with, $this->whitelist)) { return true; } else { if (in_array($requested_with, $this->blacklist)) { return false; } } } // Now we handle Android UAs that haven't been eliminated above (No X-Requested-With header and not a third party browser) // Make sure to use the original UA and not the normalized one if (preg_match("#Mozilla/5.0 \\(Linux;( U;)? Android.*AppleWebKit.*\\(KHTML, like Gecko\\)#", $ua_original)) { // Among those UAs in here, we are interested in UAs from apps that contain a webview style UA and add stuff to the beginning or the end of the string(FB, Flipboard etc.) // Android >= 4.4 if ((strpos($ua, 'Android 4.4') !== false || strpos($ua, 'Android 5.') !== false) && !preg_match("#^Mozilla/5.0 \\(Linux; Android [45]\\.[\\d\\.]+; .+ Build/.+\\) AppleWebKit/[\\d\\.+]+ \\(KHTML, like Gecko\\) Version/[\\d\\.]+ Chrome/([\\d]+)\\.[\\d\\.]+? (?:Mobile )?Safari/[\\d\\.+]+\$#", $ua_original)) { if (preg_match("#Chrome/(\\d+)\\.#", $ua, $matches)) { if ($matches[1] < 30) { return false; } } return true; } // Android < 4.4 if (preg_match("#Android [1234]\\.[123]#", $ua) && !preg_match("#^Mozilla/5.0 \\(Linux;( U;)? Android [1234]\\.[\\d\\.]+(-update1)?; [a-zA-Z]+-[a-zA-Z]+; .+ Build/.+\\) AppleWebKit/[\\d\\.+]+ \\(KHTML, like Gecko\\) Version/[\\d\\.]+ (Mobile )?Safari/[\\d\\.+]+\$#", $ua_original)) { return true; } } return false; } // Return is_app_webview = false for everything else return false; }
public function applyConclusiveMatch($userAgent) { // Look for RIS delimited UAs first $delimiter_idx = strpos($userAgent, WURFL_Constants::RIS_DELIMITER); if ($delimiter_idx !== false) { $tolerance = $delimiter_idx + strlen(WURFL_Constants::RIS_DELIMITER); return $this->getDeviceIDFromRIS($userAgent, $tolerance); } // Opera Mini if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Opera Mini')) { if (WURFL_Handlers_Utils::checkIfContains($userAgent, ' Build/')) { $tolerance = WURFL_Handlers_Utils::indexOfOrLength($userAgent, ' Build/'); return $this->getDeviceIDFromRIS($userAgent, $tolerance); } $prefixes = array('Opera/9.80 (J2ME/MIDP; Opera Mini/5' => 'uabait_opera_mini_android_v50', 'Opera/9.80 (Android; Opera Mini/5.0' => 'uabait_opera_mini_android_v50', 'Opera/9.80 (Android; Opera Mini/5.1' => 'uabait_opera_mini_android_v51'); foreach ($prefixes as $prefix => $defaultID) { if (WURFL_Handlers_Utils::checkIfStartsWith($userAgent, $prefix)) { return $this->getDeviceIDFromRIS($userAgent, strlen($prefix)); } } } // Opera Mobi if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Opera Mobi')) { $tolerance = WURFL_Handlers_Utils::secondSlash($userAgent); return $this->getDeviceIDFromRIS($userAgent, $tolerance); } // Opera Tablet if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Opera Tablet')) { $tolerance = WURFL_Handlers_Utils::secondSlash($userAgent); return $this->getDeviceIDFromRIS($userAgent, $tolerance); } // Fennec if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Fennec', 'Firefox'))) { $tolerance = WURFL_Handlers_Utils::indexOfOrLength($userAgent, ')'); return $this->getDeviceIDFromRIS($userAgent, $tolerance); } // UCWEB7 if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'UCWEB7')) { // The tolerance is after UCWEB7, not before $find = 'UCWEB7'; $tolerance = strpos($userAgent, $find) + strlen($find); if ($tolerance > strlen($userAgent)) { $tolerance = strlen($userAgent); } return $this->getDeviceIDFromRIS($userAgent, $tolerance); } // NetFrontLifeBrowser if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'NetFrontLifeBrowser/2.2')) { $find = 'NetFrontLifeBrowser/2.2'; $tolerance = strpos($userAgent, $find) + strlen($find); if ($tolerance > strlen($userAgent)) { $tolerance = strlen($userAgent); } return $this->getDeviceIDFromRIS($userAgent, $tolerance); } // Standard RIS Matching $tolerance = min(WURFL_Handlers_Utils::indexOfOrLength($userAgent, ' Build/'), WURFL_Handlers_Utils::indexOfOrLength($userAgent, ' AppleWebKit')); return $this->getDeviceIDFromRIS($userAgent, $tolerance); }
public function canHandle($userAgent) { if (WURFL_Handlers_Utils::isMobileBrowser($userAgent)) { return false; } if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Opera', 'armv', 'MOTO', 'BREW'))) { return false; } return WURFL_Handlers_Utils::checkIfStartsWith($userAgent, 'Mozilla') && WURFL_Handlers_Utils::checkIfContains($userAgent, 'MSIE'); }
public function canHandle($userAgent) { if (WURFL_Handlers_Utils::isMobileBrowser($userAgent)) { return false; } if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Tablet', 'Sony', 'Novarra', 'Opera'))) { return false; } return WURFL_Handlers_Utils::checkIfContains($userAgent, 'Firefox'); }
public function normalize($userAgent) { $userAgent = preg_replace('/(Android)[ \\-](\\d\\.\\d)([^; \\/\\)]+)/', '$1 $2', $userAgent); $skip_normalization = array('Opera Mini', 'Opera Mobi', 'Opera Tablet', 'Fennec', 'Firefox', 'UCWEB7', 'NetFrontLifeBrowser/2.2'); if (!WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, $skip_normalization)) { $model = WURFL_Handlers_AndroidHandler::getAndroidModel($userAgent, false); $version = WURFL_Handlers_AndroidHandler::getAndroidVersion($userAgent, false); if ($model !== null && $version !== null) { $prefix = $version . ' ' . $model . WURFL_Constants::RIS_DELIMITER; return $prefix . $userAgent; } } return $userAgent; }
public function applyRecoveryMatch($userAgent) { if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Kindle/1')) { return 'amazon_kindle_ver1'; } if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Kindle/2')) { return 'amazon_kindle2_ver1'; } if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Kindle/3')) { return 'amazon_kindle3_ver1'; } if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Kindle Fire', 'Silk'))) { return 'amazon_kindle_fire_ver1'; } return 'generic_amazon_kindle'; }
public function applyRecoveryMatch($userAgent) { // "Windows Phone OS 8" is for MS Ad SDK issues if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Windows Phone 8', 'Windows Phone OS 8'))) { return 'generic_ms_phone_os8'; } // WP OS 7.10 = Windows Phone 7.5 or 7.8 if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Windows Phone OS 7.5', 'Windows Phone OS 7.10'))) { return 'generic_ms_phone_os7_5'; } // Looking for "Windows Phone OS 7" instead of "Windows Phone OS 7.0" to address all WP 7 UAs that we may not catch else where if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Windows Phone OS 7')) { return 'generic_ms_phone_os7'; } if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Windows Phone 6.5')) { return 'generic_ms_winmo6_5'; } return WURFL_Constants::NO_MATCH; }
public function applyRecoveryMatch($userAgent) { if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('WPDesktop', 'ZuneWP7')) || WURFL_Handlers_Utils::checkIfContainsAll($userAgent, array('Mozilla/5.0 (Windows NT ', ' ARM;', ' Edge/'))) { if (WURFL_Handlers_Utils::checkIfContainsAll($userAgent, array('Mozilla/5.0 (Windows NT ', ' ARM;', ' Edge/'))) { return 'generic_ms_phone_os10_desktopmode'; } if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'WPDesktop')) { return 'generic_ms_phone_os8_desktopmode'; } if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Trident/5.0')) { return 'generic_ms_phone_os7_5_desktopmode'; } return 'generic_ms_phone_os7_desktopmode'; } $version = self::getWindowsPhoneVersion($userAgent); if ($version == "10.0") { return 'generic_ms_phone_os10'; } if ($version == "8.1") { return 'generic_ms_phone_os8_1'; } if ($version == "8.0") { return 'generic_ms_phone_os8'; } if ($version == "7.8") { return 'generic_ms_phone_os7_8'; } if ($version == "7.5") { return 'generic_ms_phone_os7_5'; } if ($version == "7.0") { return 'generic_ms_phone_os7'; } if ($version == "6.5") { return 'generic_ms_winmo6_5'; } //These are probably UAs of the type "Windows Phone Ad Client (Xna)/5.1.0.0 BMID/E67970D969" if (WURFL_Handlers_Utils::checkIfStartsWithAnyOf($userAgent, array('Windows Phone Ad Client', 'WindowsPhoneAdClient'))) { return 'generic_ms_phone_os7'; } return WURFL_Constants::NO_MATCH; }
public function canHandle($userAgent) { return WURFL_Handlers_Utils::checkIfContains($userAgent, 'Firefox/') && WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Mobile', 'Tablet')); }
/** * Is the given user agent very likely to be a desktop browser * @param string $userAgent * @return bool */ public static function isDesktopBrowserHeavyDutyAnalysis($userAgent) { // Check Smart TV keywords if (WURFL_Handlers_Utils::isSmartTV($userAgent)) { return false; } // Chrome if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Chrome') && !WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Android', 'Ventana'))) { return true; } // Check mobile keywords if (WURFL_Handlers_Utils::isMobileBrowser($userAgent)) { return false; } if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'PPC')) { return false; } // PowerPC; not always mobile, but we'll kick it out // Firefox; fennec is already handled in the WURFL_Constants::$MOBILE_BROWSERS keywords if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Firefox') && !WURFL_Handlers_Utils::checkIfContains($userAgent, 'Tablet')) { return true; } // Safari if (preg_match('#^Mozilla/5\\.0 \\((?:Macintosh|Windows)[^\\)]+\\) AppleWebKit/[\\d\\.]+ \\(KHTML, like Gecko\\) Version/[\\d\\.]+ Safari/[\\d\\.]+$#', $userAgent)) { return true; } // Opera Desktop if (WURFL_Handlers_Utils::checkIfStartsWith($userAgent, 'Opera/9.80 (Windows NT', 'Opera/9.80 (Macintosh')) { return true; } // Check desktop keywords if (WURFL_Handlers_Utils::isDesktopBrowser($userAgent)) { return true; } // Internet Explorer 11 if (preg_match('/^Mozilla\\/5\\.0 \\(Windows NT.+?Trident.+?; rv:\\d\\d\\.\\d+\\)/', $userAgent)) { return true; } // Internet Explorer 9 or 10 if (preg_match('/^Mozilla\\/5\\.0 \\(compatible; MSIE (9|10)\\.0; Windows NT \\d\\.\\d/', $userAgent)) { return true; } // Internet Explorer <9 if (preg_match('/^Mozilla\\/4\\.0 \\(compatible; MSIE \\d\\.\\d; Windows NT \\d\\.\\d/', $userAgent)) { return true; } return false; }
/** * * @param string $userAgent * @return string */ public function canHandle($userAgent) { return WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array("LGUPLUS", "lgtelecom")); }
public function canHandle($userAgent) { return WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('WPDesktop', 'ZuneWP7')); }
/** * Applies Catch-All match * @param string $userAgent * @return string WURFL deviceID */ public function applyRecoveryCatchAllMatch($userAgent) { if (WURFL_Handlers_Utils::isDesktopBrowserHeavyDutyAnalysis($userAgent)) { return WURFL_Constants::GENERIC_WEB_BROWSER; } if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'CoreMedia')) { return 'apple_iphone_coremedia_ver1'; } if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Windows CE')) { return 'generic_ms_mobile'; } if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'UP.Browser/7.2')) { return 'opwv_v72_generic'; } if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'UP.Browser/7')) { return 'opwv_v7_generic'; } if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'UP.Browser/6.2')) { return 'opwv_v62_generic'; } if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'UP.Browser/6')) { return 'opwv_v6_generic'; } if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'UP.Browser/5')) { return 'upgui_generic'; } if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'UP.Browser/4')) { return 'uptext_generic'; } if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'UP.Browser/3')) { return 'uptext_generic'; } // Series 60 if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'Series60')) { return 'nokia_generic_series60'; } // Access/Net Front if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('NetFront/3.0', 'ACS-NF/3.0'))) { return 'generic_netfront_ver3'; } if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('NetFront/3.1', 'ACS-NF/3.1'))) { return 'generic_netfront_ver3_1'; } if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('NetFront/3.2', 'ACS-NF/3.2'))) { return 'generic_netfront_ver3_2'; } if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('NetFront/3.3', 'ACS-NF/3.3'))) { return 'generic_netfront_ver3_3'; } if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'NetFront/3.4')) { return 'generic_netfront_ver3_4'; } if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'NetFront/3.5')) { return 'generic_netfront_ver3_5'; } if (WURFL_Handlers_Utils::checkIfContains($userAgent, 'NetFront/4.0')) { return 'generic_netfront_ver4_0'; } // Contains Mozilla/, but not at the beginning of the UA // ie: MOTORAZR V8/R601_G_80.41.17R Mozilla/4.0 (compatible; MSIE 6.0 Linux; MOTORAZR V88.50) Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera 8.50[zh] if (strpos($userAgent, 'Mozilla/') > 0) { return WURFL_Constants::GENERIC_XHTML; } if (WURFL_Handlers_Utils::checkIfContainsAnyOf($userAgent, array('Obigo', 'AU-MIC/2', 'AU-MIC-', 'AU-OBIGO/', 'Teleca Q03B1'))) { return WURFL_Constants::GENERIC_XHTML; } // DoCoMo if (WURFL_Handlers_Utils::checkIfStartsWithAnyOf($userAgent, array('DoCoMo', 'KDDI'))) { return 'docomo_generic_jap_ver1'; } if (WURFL_Handlers_Utils::isMobileBrowser($userAgent)) { return WURFL_Constants::GENERIC_MOBILE; } return WURFL_Constants::GENERIC; }