remove not know info get_browser php javascript jquery browser

not - php know browser



¿Cómo obtener el nombre y la versión exacta del navegador? (8)

He intentado algunas soluciones, pero no puedo obtener el nombre y la versión exactos:

Estoy intentando seguir el código:

$browserAgent = $_SERVER[''HTTP_USER_AGENT'']; echo $browserAgent;

Salida del código anterior:

Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24

Pero estoy usando:

Google Chrome 11.0.696.68 on Ubuntu 10.04

Así que puedo encontrar en Chrome/11.0.696.68 en la cadena de salida pero también está mostrando algunos otros nombres de navegadores que son confusos para extraer el nombre exacto del navegador / versión de la cadena.


Me gustaría sugerirle esta clase increíble. Esto funcionó muy bien para mí.

http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php.html/

Estoy publicando el código que utilicé con el aviso de copyright del autor original. Puede obtener el último código del enlace de arriba.

<?php /** * File: Browser.php * Author: Chris Schuld (http://chrisschuld.com/) * * Copyright (C) 2008-2010 Chris Schuld ([email protected]) * * Typical Usage: * * $browser = new Browser(); * if( $browser->getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) { * echo ''You have FireFox version 2 or greater''; * } * */ class Browser { private $_agent = ''''; private $_browser_name = ''''; private $_version = ''''; private $_platform = ''''; private $_os = ''''; private $_is_aol = false; private $_is_mobile = false; private $_is_robot = false; private $_aol_version = ''''; const BROWSER_UNKNOWN = ''unknown''; const VERSION_UNKNOWN = ''unknown''; const BROWSER_OPERA = ''Opera''; const BROWSER_OPERA_MINI = ''Opera Mini''; const BROWSER_WEBTV = ''WebTV''; const BROWSER_IE = ''Internet Explorer''; const BROWSER_POCKET_IE = ''Pocket Internet Explorer''; const BROWSER_KONQUEROR = ''Konqueror''; const BROWSER_ICAB = ''iCab''; const BROWSER_OMNIWEB = ''OmniWeb''; const BROWSER_FIREBIRD = ''Firebird''; const BROWSER_FIREFOX = ''Firefox''; const BROWSER_ICEWEASEL = ''Iceweasel''; const BROWSER_SHIRETOKO = ''Shiretoko''; const BROWSER_MOZILLA = ''Mozilla''; const BROWSER_AMAYA = ''Amaya''; const BROWSER_LYNX = ''Lynx''; const BROWSER_SAFARI = ''Safari''; const BROWSER_IPHONE = ''iPhone''; const BROWSER_IPOD = ''iPod''; const BROWSER_IPAD = ''iPad''; const BROWSER_CHROME = ''Chrome''; const BROWSER_ANDROID = ''Android''; const BROWSER_GOOGLEBOT = ''GoogleBot''; const BROWSER_SLURP = ''Yahoo! Slurp''; const BROWSER_W3CVALIDATOR = ''W3C Validator''; const BROWSER_BLACKBERRY = ''BlackBerry''; const BROWSER_ICECAT = ''IceCat''; const BROWSER_NOKIA_S60 = ''Nokia S60 OSS Browser''; const BROWSER_NOKIA = ''Nokia Browser''; const BROWSER_MSN = ''MSN Browser''; const BROWSER_MSNBOT = ''MSN Bot''; const BROWSER_NETSCAPE_NAVIGATOR = ''Netscape Navigator''; const BROWSER_GALEON = ''Galeon''; const BROWSER_NETPOSITIVE = ''NetPositive''; const BROWSER_PHOENIX = ''Phoenix''; const PLATFORM_UNKNOWN = ''unknown''; const PLATFORM_WINDOWS = ''Windows''; const PLATFORM_WINDOWS_CE = ''Windows CE''; const PLATFORM_APPLE = ''Apple''; const PLATFORM_LINUX = ''Linux''; const PLATFORM_OS2 = ''OS/2''; const PLATFORM_BEOS = ''BeOS''; const PLATFORM_IPHONE = ''iPhone''; const PLATFORM_IPOD = ''iPod''; const PLATFORM_IPAD = ''iPad''; const PLATFORM_BLACKBERRY = ''BlackBerry''; const PLATFORM_NOKIA = ''Nokia''; const PLATFORM_FREEBSD = ''FreeBSD''; const PLATFORM_OPENBSD = ''OpenBSD''; const PLATFORM_NETBSD = ''NetBSD''; const PLATFORM_SUNOS = ''SunOS''; const PLATFORM_OPENSOLARIS = ''OpenSolaris''; const PLATFORM_ANDROID = ''Android''; const OPERATING_SYSTEM_UNKNOWN = ''unknown''; public function Browser($useragent="") { $this->reset(); if( $useragent != "" ) { $this->setUserAgent($useragent); } else { $this->determine(); } } /** * Reset all properties */ public function reset() { $this->_agent = isset($_SERVER[''HTTP_USER_AGENT'']) ? $_SERVER[''HTTP_USER_AGENT''] : ""; $this->_browser_name = self::BROWSER_UNKNOWN; $this->_version = self::VERSION_UNKNOWN; $this->_platform = self::PLATFORM_UNKNOWN; $this->_os = self::OPERATING_SYSTEM_UNKNOWN; $this->_is_aol = false; $this->_is_mobile = false; $this->_is_robot = false; $this->_aol_version = self::VERSION_UNKNOWN; } /** * Check to see if the specific browser is valid * @param string $browserName * @return boolean */ function isBrowser($browserName) { return( 0 == strcasecmp($this->_browser_name, trim($browserName))); } /** * The name of the browser. All return types are from the class contants * @return string Name of the browser */ public function getBrowser() { return $this->_browser_name; } /** * Set the name of the browser * @param $browser The name of the Browser */ public function setBrowser($browser) { return $this->_browser_name = $browser; } /** * The name of the platform. All return types are from the class contants * @return string Name of the browser */ public function getPlatform() { return $this->_platform; } /** * Set the name of the platform * @param $platform The name of the Platform */ public function setPlatform($platform) { return $this->_platform = $platform; } /** * The version of the browser. * @return string Version of the browser (will only contain alpha-numeric characters and a period) */ public function getVersion() { return $this->_version; } /** * Set the version of the browser * @param $version The version of the Browser */ public function setVersion($version) { $this->_version = preg_replace(''/[^0-9,.,a-z,A-Z-]/'','''',$version); } /** * The version of AOL. * @return string Version of AOL (will only contain alpha-numeric characters and a period) */ public function getAolVersion() { return $this->_aol_version; } /** * Set the version of AOL * @param $version The version of AOL */ public function setAolVersion($version) { $this->_aol_version = preg_replace(''/[^0-9,.,a-z,A-Z]/'','''',$version); } /** * Is the browser from AOL? * @return boolean */ public function isAol() { return $this->_is_aol; } /** * Is the browser from a mobile device? * @return boolean */ public function isMobile() { return $this->_is_mobile; } /** * Is the browser from a robot (ex Slurp,GoogleBot)? * @return boolean */ public function isRobot() { return $this->_is_robot; } /** * Set the browser to be from AOL * @param $isAol */ public function setAol($isAol) { $this->_is_aol = $isAol; } /** * Set the Browser to be mobile * @param boolean */ protected function setMobile($value=true) { $this->_is_mobile = $value; } /** * Set the Browser to be a robot * @param boolean */ protected function setRobot($value=true) { $this->_is_robot = $value; } /** * Get the user agent value in use to determine the browser * @return string The user agent from the HTTP header */ public function getUserAgent() { return $this->_agent; } /** * Set the user agent value (the construction will use the HTTP header value - this will overwrite it) * @param $agent_string The value for the User Agent */ public function setUserAgent($agent_string) { $this->reset(); $this->_agent = $agent_string; $this->determine(); } /** * Used to determine if the browser is actually "chromeframe" * @return boolean */ public function isChromeFrame() { return( strpos($this->_agent,"chromeframe") !== false ); } /** * Returns a formatted string with a summary of the details of the browser. * @return string formatted string with a summary of the browser */ public function __toString() { return "<strong>Browser Name:</strong>{$this->getBrowser()}<br/>/n" . "<strong>Browser Version:</strong>{$this->getVersion()}<br/>/n" . "<strong>Browser User Agent String:</strong>{$this->getUserAgent()}<br/>/n" . "<strong>Platform:</strong>{$this->getPlatform()}<br/>"; } /** * Protected routine to calculate and determine what the browser is in use (including platform) */ protected function determine() { $this->checkPlatform(); $this->checkBrowsers(); $this->checkForAol(); } /** * Protected routine to determine the browser type * @return boolean */ protected function checkBrowsers() { return ( $this->checkBrowserWebTv() || $this->checkBrowserInternetExplorer() || $this->checkBrowserOpera() || $this->checkBrowserGaleon() || $this->checkBrowserNetscapeNavigator9Plus() || $this->checkBrowserFirefox() || $this->checkBrowserChrome() || $this->checkBrowserOmniWeb() || // common mobile $this->checkBrowserAndroid() || $this->checkBrowseriPad() || $this->checkBrowseriPod() || $this->checkBrowseriPhone() || $this->checkBrowserBlackBerry() || $this->checkBrowserNokia() || // common bots $this->checkBrowserGoogleBot() || $this->checkBrowserMSNBot() || $this->checkBrowserSlurp() || // WebKit base check (post mobile and others) $this->checkBrowserSafari() || // everyone else $this->checkBrowserNetPositive() || $this->checkBrowserFirebird() || $this->checkBrowserKonqueror() || $this->checkBrowserIcab() || $this->checkBrowserPhoenix() || $this->checkBrowserAmaya() || $this->checkBrowserLynx() || $this->checkBrowserShiretoko() || $this->checkBrowserIceCat() || $this->checkBrowserW3CValidator() || $this->checkBrowserMozilla() /* Mozilla is such an open standard that you must check it last */ ); } protected function checkBrowserBlackBerry() { if( stripos($this->_agent,''blackberry'') !== false ) { $aresult = explode("/",stristr($this->_agent,"BlackBerry")); $aversion = explode('' '',$aresult[1]); $this->setVersion($aversion[0]); $this->_browser_name = self::BROWSER_BLACKBERRY; $this->setMobile(true); return true; } return false; } protected function checkForAol() { $this->setAol(false); $this->setAolVersion(self::VERSION_UNKNOWN); if( stripos($this->_agent,''aol'') !== false ) { $aversion = explode('' '',stristr($this->_agent, ''AOL'')); $this->setAol(true); $this->setAolVersion(preg_replace(''/[^0-9/.a-z]/i'', '''', $aversion[1])); return true; } return false; } protected function checkBrowserGoogleBot() { if( stripos($this->_agent,''googlebot'') !== false ) { $aresult = explode(''/'',stristr($this->_agent,''googlebot'')); $aversion = explode('' '',$aresult[1]); $this->setVersion(str_replace('';'','''',$aversion[0])); $this->_browser_name = self::BROWSER_GOOGLEBOT; $this->setRobot(true); return true; } return false; } protected function checkBrowserMSNBot() { if( stripos($this->_agent,"msnbot") !== false ) { $aresult = explode("/",stristr($this->_agent,"msnbot")); $aversion = explode(" ",$aresult[1]); $this->setVersion(str_replace(";","",$aversion[0])); $this->_browser_name = self::BROWSER_MSNBOT; $this->setRobot(true); return true; } return false; } protected function checkBrowserW3CValidator() { if( stripos($this->_agent,''W3C-checklink'') !== false ) { $aresult = explode(''/'',stristr($this->_agent,''W3C-checklink'')); $aversion = explode('' '',$aresult[1]); $this->setVersion($aversion[0]); $this->_browser_name = self::BROWSER_W3CVALIDATOR; return true; } else if( stripos($this->_agent,''W3C_Validator'') !== false ) { // Some of the Validator versions do not delineate w/ a slash - add it back in $ua = str_replace("W3C_Validator ", "W3C_Validator/", $this->_agent); $aresult = explode(''/'',stristr($ua,''W3C_Validator'')); $aversion = explode('' '',$aresult[1]); $this->setVersion($aversion[0]); $this->_browser_name = self::BROWSER_W3CVALIDATOR; return true; } return false; } protected function checkBrowserSlurp() { if( stripos($this->_agent,''slurp'') !== false ) { $aresult = explode(''/'',stristr($this->_agent,''Slurp'')); $aversion = explode('' '',$aresult[1]); $this->setVersion($aversion[0]); $this->_browser_name = self::BROWSER_SLURP; $this->setRobot(true); $this->setMobile(false); return true; } return false; } protected function checkBrowserInternetExplorer() { // Test for v1 - v1.5 IE if( stripos($this->_agent,''microsoft internet explorer'') !== false ) { $this->setBrowser(self::BROWSER_IE); $this->setVersion(''1.0''); $aresult = stristr($this->_agent, ''/''); if( preg_match(''/308|425|426|474|0b1/i'', $aresult) ) { $this->setVersion(''1.5''); } return true; } // Test for versions > 1.5 else if( stripos($this->_agent,''msie'') !== false && stripos($this->_agent,''opera'') === false ) { // See if the browser is the odd MSN Explorer if( stripos($this->_agent,''msnb'') !== false ) { $aresult = explode('' '',stristr(str_replace('';'',''; '',$this->_agent),''MSN'')); $this->setBrowser( self::BROWSER_MSN ); $this->setVersion(str_replace(array(''('','')'','';''),'''',$aresult[1])); return true; } $aresult = explode('' '',stristr(str_replace('';'',''; '',$this->_agent),''msie'')); $this->setBrowser( self::BROWSER_IE ); $this->setVersion(str_replace(array(''('','')'','';''),'''',$aresult[1])); return true; } // Test for Pocket IE else if( stripos($this->_agent,''mspie'') !== false || stripos($this->_agent,''pocket'') !== false ) { $aresult = explode('' '',stristr($this->_agent,''mspie'')); $this->setPlatform( self::PLATFORM_WINDOWS_CE ); $this->setBrowser( self::BROWSER_POCKET_IE ); $this->setMobile(true); if( stripos($this->_agent,''mspie'') !== false ) { $this->setVersion($aresult[1]); } else { $aversion = explode(''/'',$this->_agent); $this->setVersion($aversion[1]); } return true; } return false; } protected function checkBrowserOpera() { if( stripos($this->_agent,''opera mini'') !== false ) { $resultant = stristr($this->_agent, ''opera mini''); if( preg_match(''////'',$resultant) ) { $aresult = explode(''/'',$resultant); $aversion = explode('' '',$aresult[1]); $this->setVersion($aversion[0]); } else { $aversion = explode('' '',stristr($resultant,''opera mini'')); $this->setVersion($aversion[1]); } $this->_browser_name = self::BROWSER_OPERA_MINI; $this->setMobile(true); return true; } else if( stripos($this->_agent,''opera'') !== false ) { $resultant = stristr($this->_agent, ''opera''); if( preg_match(''/Version//(10.*)$/'',$resultant,$matches) ) { $this->setVersion($matches[1]); } else if( preg_match(''////'',$resultant) ) { $aresult = explode(''/'',str_replace("("," ",$resultant)); $aversion = explode('' '',$aresult[1]); $this->setVersion($aversion[0]); } else { $aversion = explode('' '',stristr($resultant,''opera'')); $this->setVersion(isset($aversion[1])?$aversion[1]:""); } $this->_browser_name = self::BROWSER_OPERA; return true; } return false; } protected function checkBrowserChrome() { if( stripos($this->_agent,''Chrome'') !== false ) { $aresult = explode(''/'',stristr($this->_agent,''Chrome'')); $aversion = explode('' '',$aresult[1]); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_CHROME); return true; } return false; } protected function checkBrowserWebTv() { if( stripos($this->_agent,''webtv'') !== false ) { $aresult = explode(''/'',stristr($this->_agent,''webtv'')); $aversion = explode('' '',$aresult[1]); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_WEBTV); return true; } return false; } protected function checkBrowserNetPositive() { if( stripos($this->_agent,''NetPositive'') !== false ) { $aresult = explode(''/'',stristr($this->_agent,''NetPositive'')); $aversion = explode('' '',$aresult[1]); $this->setVersion(str_replace(array(''('','')'','';''),'''',$aversion[0])); $this->setBrowser(self::BROWSER_NETPOSITIVE); return true; } return false; } protected function checkBrowserGaleon() { if( stripos($this->_agent,''galeon'') !== false ) { $aresult = explode('' '',stristr($this->_agent,''galeon'')); $aversion = explode(''/'',$aresult[0]); $this->setVersion($aversion[1]); $this->setBrowser(self::BROWSER_GALEON); return true; } return false; } protected function checkBrowserKonqueror() { if( stripos($this->_agent,''Konqueror'') !== false ) { $aresult = explode('' '',stristr($this->_agent,''Konqueror'')); $aversion = explode(''/'',$aresult[0]); $this->setVersion($aversion[1]); $this->setBrowser(self::BROWSER_KONQUEROR); return true; } return false; } protected function checkBrowserIcab() { if( stripos($this->_agent,''icab'') !== false ) { $aversion = explode('' '',stristr(str_replace(''/'','' '',$this->_agent),''icab'')); $this->setVersion($aversion[1]); $this->setBrowser(self::BROWSER_ICAB); return true; } return false; } protected function checkBrowserOmniWeb() { if( stripos($this->_agent,''omniweb'') !== false ) { $aresult = explode(''/'',stristr($this->_agent,''omniweb'')); $aversion = explode('' '',isset($aresult[1])?$aresult[1]:""); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_OMNIWEB); return true; } return false; } protected function checkBrowserPhoenix() { if( stripos($this->_agent,''Phoenix'') !== false ) { $aversion = explode(''/'',stristr($this->_agent,''Phoenix'')); $this->setVersion($aversion[1]); $this->setBrowser(self::BROWSER_PHOENIX); return true; } return false; } protected function checkBrowserFirebird() { if( stripos($this->_agent,''Firebird'') !== false ) { $aversion = explode(''/'',stristr($this->_agent,''Firebird'')); $this->setVersion($aversion[1]); $this->setBrowser(self::BROWSER_FIREBIRD); return true; } return false; } protected function checkBrowserNetscapeNavigator9Plus() { if( stripos($this->_agent,''Firefox'') !== false && preg_match(''/Navigator//([^ ]*)/i'',$this->_agent,$matches) ) { $this->setVersion($matches[1]); $this->setBrowser(self::BROWSER_NETSCAPE_NAVIGATOR); return true; } else if( stripos($this->_agent,''Firefox'') === false && preg_match(''/Netscape6?//([^ ]*)/i'',$this->_agent,$matches) ) { $this->setVersion($matches[1]); $this->setBrowser(self::BROWSER_NETSCAPE_NAVIGATOR); return true; } return false; } protected function checkBrowserShiretoko() { if( stripos($this->_agent,''Mozilla'') !== false && preg_match(''/Shiretoko//([^ ]*)/i'',$this->_agent,$matches) ) { $this->setVersion($matches[1]); $this->setBrowser(self::BROWSER_SHIRETOKO); return true; } return false; } protected function checkBrowserIceCat() { if( stripos($this->_agent,''Mozilla'') !== false && preg_match(''/IceCat//([^ ]*)/i'',$this->_agent,$matches) ) { $this->setVersion($matches[1]); $this->setBrowser(self::BROWSER_ICECAT); return true; } return false; } protected function checkBrowserNokia() { if( preg_match("/Nokia([^//]+)//([^ SP]+)/i",$this->_agent,$matches) ) { $this->setVersion($matches[2]); if( stripos($this->_agent,''Series60'') !== false || strpos($this->_agent,''S60'') !== false ) { $this->setBrowser(self::BROWSER_NOKIA_S60); } else { $this->setBrowser( self::BROWSER_NOKIA ); } $this->setMobile(true); return true; } return false; } protected function checkBrowserFirefox() { if( stripos($this->_agent,''safari'') === false ) { if( preg_match("/Firefox[// /(]([^ ;/)]+)/i",$this->_agent,$matches) ) { $this->setVersion($matches[1]); $this->setBrowser(self::BROWSER_FIREFOX); return true; } else if( preg_match("/Firefox$/i",$this->_agent,$matches) ) { $this->setVersion(""); $this->setBrowser(self::BROWSER_FIREFOX); return true; } } return false; } protected function checkBrowserIceweasel() { if( stripos($this->_agent,''Iceweasel'') !== false ) { $aresult = explode(''/'',stristr($this->_agent,''Iceweasel'')); $aversion = explode('' '',$aresult[1]); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_ICEWEASEL); return true; } return false; } protected function checkBrowserMozilla() { if( stripos($this->_agent,''mozilla'') !== false && preg_match(''/rv:[0-9].[0-9][a-b]?/i'',$this->_agent) && stripos($this->_agent,''netscape'') === false) { $aversion = explode('' '',stristr($this->_agent,''rv:'')); preg_match(''/rv:[0-9].[0-9][a-b]?/i'',$this->_agent,$aversion); $this->setVersion(str_replace(''rv:'','''',$aversion[0])); $this->setBrowser(self::BROWSER_MOZILLA); return true; } else if( stripos($this->_agent,''mozilla'') !== false && preg_match(''/rv:[0-9]/.[0-9]/i'',$this->_agent) && stripos($this->_agent,''netscape'') === false ) { $aversion = explode('''',stristr($this->_agent,''rv:'')); $this->setVersion(str_replace(''rv:'','''',$aversion[0])); $this->setBrowser(self::BROWSER_MOZILLA); return true; } else if( stripos($this->_agent,''mozilla'') !== false && preg_match(''/mozilla//([^ ]*)/i'',$this->_agent,$matches) && stripos($this->_agent,''netscape'') === false ) { $this->setVersion($matches[1]); $this->setBrowser(self::BROWSER_MOZILLA); return true; } return false; } protected function checkBrowserLynx() { if( stripos($this->_agent,''lynx'') !== false ) { $aresult = explode(''/'',stristr($this->_agent,''Lynx'')); $aversion = explode('' '',(isset($aresult[1])?$aresult[1]:"")); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_LYNX); return true; } return false; } protected function checkBrowserAmaya() { if( stripos($this->_agent,''amaya'') !== false ) { $aresult = explode(''/'',stristr($this->_agent,''Amaya'')); $aversion = explode('' '',$aresult[1]); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_AMAYA); return true; } return false; } protected function checkBrowserSafari() { if( stripos($this->_agent,''Safari'') !== false && stripos($this->_agent,''iPhone'') === false && stripos($this->_agent,''iPod'') === false ) { $aresult = explode(''/'',stristr($this->_agent,''Version'')); if( isset($aresult[1]) ) { $aversion = explode('' '',$aresult[1]); $this->setVersion($aversion[0]); } else { $this->setVersion(self::VERSION_UNKNOWN); } $this->setBrowser(self::BROWSER_SAFARI); return true; } return false; } protected function checkBrowseriPhone() { if( stripos($this->_agent,''iPhone'') !== false ) { $aresult = explode(''/'',stristr($this->_agent,''Version'')); if( isset($aresult[1]) ) { $aversion = explode('' '',$aresult[1]); $this->setVersion($aversion[0]); } else { $this->setVersion(self::VERSION_UNKNOWN); } $this->setMobile(true); $this->setBrowser(self::BROWSER_IPHONE); return true; } return false; } protected function checkBrowseriPad() { if( stripos($this->_agent,''iPad'') !== false ) { $aresult = explode(''/'',stristr($this->_agent,''Version'')); if( isset($aresult[1]) ) { $aversion = explode('' '',$aresult[1]); $this->setVersion($aversion[0]); } else { $this->setVersion(self::VERSION_UNKNOWN); } $this->setMobile(true); $this->setBrowser(self::BROWSER_IPAD); return true; } return false; } protected function checkBrowseriPod() { if( stripos($this->_agent,''iPod'') !== false ) { $aresult = explode(''/'',stristr($this->_agent,''Version'')); if( isset($aresult[1]) ) { $aversion = explode('' '',$aresult[1]); $this->setVersion($aversion[0]); } else { $this->setVersion(self::VERSION_UNKNOWN); } $this->setMobile(true); $this->setBrowser(self::BROWSER_IPOD); return true; } return false; } protected function checkBrowserAndroid() { if( stripos($this->_agent,''Android'') !== false ) { $aresult = explode('' '',stristr($this->_agent,''Android'')); if( isset($aresult[1]) ) { $aversion = explode('' '',$aresult[1]); $this->setVersion($aversion[0]); } else { $this->setVersion(self::VERSION_UNKNOWN); } $this->setMobile(true); $this->setBrowser(self::BROWSER_ANDROID); return true; } return false; } /** * Determine the user''s platform */ protected function checkPlatform() { if( stripos($this->_agent, ''windows'') !== false ) { $this->_platform = self::PLATFORM_WINDOWS; } else if( stripos($this->_agent, ''iPad'') !== false ) { $this->_platform = self::PLATFORM_IPAD; } else if( stripos($this->_agent, ''iPod'') !== false ) { $this->_platform = self::PLATFORM_IPOD; } else if( stripos($this->_agent, ''iPhone'') !== false ) { $this->_platform = self::PLATFORM_IPHONE; } elseif( stripos($this->_agent, ''mac'') !== false ) { $this->_platform = self::PLATFORM_APPLE; } elseif( stripos($this->_agent, ''android'') !== false ) { $this->_platform = self::PLATFORM_ANDROID; } elseif( stripos($this->_agent, ''linux'') !== false ) { $this->_platform = self::PLATFORM_LINUX; } else if( stripos($this->_agent, ''Nokia'') !== false ) { $this->_platform = self::PLATFORM_NOKIA; } else if( stripos($this->_agent, ''BlackBerry'') !== false ) { $this->_platform = self::PLATFORM_BLACKBERRY; } elseif( stripos($this->_agent,''FreeBSD'') !== false ) { $this->_platform = self::PLATFORM_FREEBSD; } elseif( stripos($this->_agent,''OpenBSD'') !== false ) { $this->_platform = self::PLATFORM_OPENBSD; } elseif( stripos($this->_agent,''NetBSD'') !== false ) { $this->_platform = self::PLATFORM_NETBSD; } elseif( stripos($this->_agent, ''OpenSolaris'') !== false ) { $this->_platform = self::PLATFORM_OPENSOLARIS; } elseif( stripos($this->_agent, ''SunOS'') !== false ) { $this->_platform = self::PLATFORM_SUNOS; } elseif( stripos($this->_agent, ''OS//2'') !== false ) { $this->_platform = self::PLATFORM_OS2; } elseif( stripos($this->_agent, ''BeOS'') !== false ) { $this->_platform = self::PLATFORM_BEOS; } elseif( stripos($this->_agent, ''win'') !== false ) { $this->_platform = self::PLATFORM_WINDOWS; } } } ?>


Obtuve una función increíble get_browser() .

<?php function getBrowser() { $u_agent = $_SERVER[''HTTP_USER_AGENT'']; $bname = ''Unknown''; $platform = ''Unknown''; $version= ""; //First get the platform? if (preg_match(''/linux/i'', $u_agent)) { $platform = ''linux''; } elseif (preg_match(''/macintosh|mac os x/i'', $u_agent)) { $platform = ''mac''; } elseif (preg_match(''/windows|win32/i'', $u_agent)) { $platform = ''windows''; } // Next get the name of the useragent yes seperately and for good reason if(preg_match(''/MSIE/i'',$u_agent) && !preg_match(''/Opera/i'',$u_agent)) { $bname = ''Internet Explorer''; $ub = "MSIE"; } elseif(preg_match(''/Firefox/i'',$u_agent)) { $bname = ''Mozilla Firefox''; $ub = "Firefox"; } elseif(preg_match(''/OPR/i'',$u_agent)) { $bname = ''Opera''; $ub = "Opera"; } elseif(preg_match(''/Chrome/i'',$u_agent)) { $bname = ''Google Chrome''; $ub = "Chrome"; } elseif(preg_match(''/Safari/i'',$u_agent)) { $bname = ''Apple Safari''; $ub = "Safari"; } elseif(preg_match(''/Netscape/i'',$u_agent)) { $bname = ''Netscape''; $ub = "Netscape"; } // finally get the correct version number $known = array(''Version'', $ub, ''other''); $pattern = ''#(?<browser>'' . join(''|'', $known) . '')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#''; if (!preg_match_all($pattern, $u_agent, $matches)) { // we have no matching number just continue } // see how many we have $i = count($matches[''browser'']); if ($i != 1) { //we will have two since we are not using ''other'' argument yet //see if version is before or after the name if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){ $version= $matches[''version''][0]; } else { $version= $matches[''version''][1]; } } else { $version= $matches[''version''][0]; } // check if we have a number if ($version==null || $version=="") {$version="?";} return array( ''userAgent'' => $u_agent, ''name'' => $bname, ''version'' => $version, ''platform'' => $platform, ''pattern'' => $pattern ); } // now try it $ua=getBrowser(); $yourbrowser= "Your browser: " . $ua[''name''] . " " . $ua[''version''] . " on " .$ua[''platform''] . " reports: <br >" . $ua[''userAgent'']; print_r($yourbrowser); ?>


Use get_browser()

De Manual:

echo $_SERVER[''HTTP_USER_AGENT''] . "/n/n"; $browser = get_browser(null, true); print_r($browser);

Regresará:

Array ( [browser_name_regex] => ^mozilla/5/.0 (windows; .; windows nt 5/.1; .*rv:.*) gecko/.* firefox/0/.9.*$ [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9*/ [parent] => Firefox 0.9 [platform] => WinXP [browser] => Firefox [version] => 0.9 [majorver] => 0 [minorver] => 9 [cssversion] => 2 [frames] => 1 [iframes] => 1 [tables] => 1 [cookies] => 1 [backgroundsounds] => [vbscript] => [javascript] => 1 [javaapplets] => 1 [activexcontrols] => [cdf] => [aol] => [beta] => 1 [win16] => [crawler] => [stripper] => [wap] => [netclr] => )


Use la función get_browser() .

Puede darte resultados como este:

Array ( [browser_name_regex] => ^mozilla/5/.0 (windows; .; windows nt 5/.1; .*rv:.*) gecko/.* firefox/0/.9.*$ [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9* [parent] => Firefox 0.9 [platform] => WinXP [browser] => Firefox [version] => 0.9 [majorver] => 0 [minorver] => 9 ....


Use la solución de detección de dispositivos 51Degrees.com para detectar el nombre del navegador, el proveedor y la versión.

Primero, siga la guía de 4 pasos para incorporar detector de dispositivo a su proyecto. Cuando digo incorporar me refiero a descargar el archivo con código PHP y archivo de base de datos, extraerlos e incluir 2 archivos. Eso es todo lo que hay que hacer para incorporar.

Una vez hecho esto, puede usar las siguientes propiedades para obtener información del navegador:
$_51d[''BrowserName''] - Le da el nombre del navegador (Safari, Molto, Motorola, MStarBrowser, etc.).
$_51d[''BrowserVendor''] - Le da la compañía que creó el navegador.
$_51d[''BrowserVersion''] - Número de versión del navegador


este JavaScript le da el nombre del navegador y la versión,

var browser = ''''; var browserVersion = 0; if (/Opera[///s](/d+/./d+)/.test(navigator.userAgent)) { browser = ''Opera''; } else if (/MSIE (/d+/./d+);/.test(navigator.userAgent)) { browser = ''MSIE''; } else if (/Navigator[///s](/d+/./d+)/.test(navigator.userAgent)) { browser = ''Netscape''; } else if (/Chrome[///s](/d+/./d+)/.test(navigator.userAgent)) { browser = ''Chrome''; } else if (/Safari[///s](/d+/./d+)/.test(navigator.userAgent)) { browser = ''Safari''; /Version[///s](/d+/./d+)/.test(navigator.userAgent); browserVersion = new Number(RegExp.$1); } else if (/Firefox[///s](/d+/./d+)/.test(navigator.userAgent)) { browser = ''Firefox''; } if(browserVersion === 0){ browserVersion = parseFloat(new Number(RegExp.$1)); } alert(browser + "*" + browserVersion);


Hay un comment de AlexV en esta página, que habla sobre available .

Creo que esta es una gran clase y merece una respuesta propia. Lo acabo de usar y funciona como un amuleto (muy fácil de usar).


  • Hay un conflicto entre (Safari) y (Opera) y (Chrome).

  • Los códigos anteriores no pueden funcionar correctamente

Este es mi código, y funciona muy bien sin ningún conflicto:

function ExactBrowserName() { $ExactBrowserNameUA=$_SERVER[''HTTP_USER_AGENT'']; if (strpos(strtolower($ExactBrowserNameUA), "safari/") and strpos(strtolower($ExactBrowserNameUA), "opr/")) { // OPERA $ExactBrowserNameBR="Opera"; } elseIf (strpos(strtolower($ExactBrowserNameUA), "safari/") and strpos(strtolower($ExactBrowserNameUA), "chrome/")) { // CHROME $ExactBrowserNameBR="Chrome"; } elseIf (strpos(strtolower($ExactBrowserNameUA), "msie")) { // INTERNET EXPLORER $ExactBrowserNameBR="Internet Explorer"; } elseIf (strpos(strtolower($ExactBrowserNameUA), "firefox/")) { // FIREFOX $ExactBrowserNameBR="Firefox"; } elseIf (strpos(strtolower($ExactBrowserNameUA), "safari/") and strpos(strtolower($ExactBrowserNameUA), "opr/")==false and strpos(strtolower($ExactBrowserNameUA), "chrome/")==false) { // SAFARI $ExactBrowserNameBR="Safari"; } else { // OUT OF DATA $ExactBrowserNameBR="OUT OF DATA"; }; return $ExactBrowserNameBR; }