/** * @param string $userAgent * * @return null|string */ public function applyConclusiveMatch($userAgent) { $matches = array(); if (preg_match('#^Mozilla/5\\.0 \\(Windows NT.+? Edge/(\\d+)\\.(\\d+)#', $userAgent, $matches) || preg_match('#^Mozilla/5\\.0 \\(.+?Trident.+?; rv:(\\d\\d)\\.(\\d+)\\)#', $userAgent, $matches) || preg_match('#^Mozilla/[45]\\.0 \\(compatible; MSIE (\\d+)\\.(\\d+);#', $userAgent, $matches)) { $major = (int) $matches[1]; $minor = (int) $matches[2]; // MSIE 5.5 is handled specifically if ($major === 5 && $minor === 5) { return 'msie_5_5'; } // Look for version in constant ID array if (array_key_exists($major, self::$constantIDs)) { return self::$constantIDs[$major]; } } return $this->getDeviceIDFromRIS($userAgent, Utils::indexOfOrLength($userAgent, 'Trident')); }
public function applyConclusiveMatch($userAgent) { if (Utils::checkIfContains($userAgent, 'BB10')) { $tolerance = Utils::indexOfOrLength($userAgent, ')'); } else { if (Utils::checkIfStartsWith($userAgent, 'Mozilla/4')) { $tolerance = Utils::secondSlash($userAgent); } else { if (Utils::checkIfStartsWith($userAgent, 'Mozilla/5')) { $tolerance = Utils::ordinalIndexOf($userAgent, ';', 3); } elseif (Utils::checkIfStartsWith($userAgent, 'PlayBook')) { $tolerance = Utils::firstCloseParen($userAgent); } else { $tolerance = Utils::firstSlash($userAgent); } } } return $this->getDeviceIDFromRIS($userAgent, $tolerance); }
/** * @param string $userAgent * * @return null|string */ public function applyConclusiveMatch($userAgent) { if (Utils::checkIfContains($userAgent, ' Build/')) { return $this->getDeviceIDFromRIS($userAgent, Utils::indexOfOrLength($userAgent, ' Build/')); } $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 (Utils::checkIfStartsWith($userAgent, $prefix)) { // If RIS returns a non-generic match, return it, else, return the default $tolerance = strlen($prefix); $deviceID = $this->getDeviceIDFromRIS($userAgent, $tolerance); if ($deviceID === WurflConstants::NO_MATCH) { return $defaultID; } return $deviceID; } } return WurflConstants::NO_MATCH; }