- 浏览: 13631238 次
- 性别:
- 来自: 洛杉矶
文章分类
- 全部博客 (1994)
- Php / Pear / Mysql / Node.js (378)
- Javascript /Jquery / Bootstrap / Web (435)
- Phone / IOS / Objective-C / Swift (137)
- Ubuntu / Mac / Github / Aptana / Nginx / Shell / Linux (335)
- Perl / Koha / Ruby / Markdown (8)
- Java / Jsp (12)
- Python 2 / Wxpython (25)
- Codeigniter / CakePHP (32)
- Div / Css / XML / HTML5 (179)
- WP / Joomla! / Magento / Shopify / Drupal / Moodle / Zimbra (275)
- Apache / VPN / Software (31)
- AS3.0/2.0 / Flex / Flash (45)
- Smarty (6)
- SEO (24)
- Google / Facebook / Pinterest / SNS (80)
- Tools (22)
最新评论
-
1455975567:
xuezhongyu01 写道wocan23 写道我想问下那个 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
xuezhongyu01:
wocan23 写道我想问下那个111.1是怎么得来的我也看不 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
18335864773:
试试 pageoffice 在线打开 PDF 文件吧. pag ...
jquery在线预览PDF文件,打开PDF文件 -
青春依旧:
opacity: 0.5; 个人喜欢这种方式!关于其他css特 ...
css透明度的设置 (兼容所有浏览器) -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
搞定网页打印自动分页问题
<?php /** * File: Browser.php * Author: Chris Schuld (http://chrisschuld.com/) * http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php/ * Last Modified: August 20th, 2010 * @version 1.9 * @package PegasusPHP * * Copyright (C) 2008-2010 Chris Schuld (chris@chrisschuld.com) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details at: * http://www.gnu.org/copyleft/gpl.html * * * Typical Usage: * * $browser = new Browser(); * if( $browser->getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) { * echo 'You have FireFox version 2 or greater'; * } * * User Agents Sampled from: http://www.useragentstring.com/ * * This implementation is based on the original work from Gary White * http://apptools.com/phptools/browser/ * * UPDATES: * * 2010-08-20 (v1.9): * + Added MSN Explorer Browser (legacy) * + Added Bing/MSN Robot (Thanks Rob MacDonald) * + Added the Android Platform (PLATFORM_ANDROID) * + Fixed issue with Android 1.6/2.2 (Thanks Tom Hirashima) * * 2010-04-27 (v1.8): * + Added iPad Support * * 2010-03-07 (v1.7): * + *MAJOR* Rebuild (preg_match and other "slow" routine removal(s)) * + Almost allof Gary's original code has been replaced * + Large PHPUNIT testing environment created to validate new releases and additions * + Added FreeBSD Platform * + Added OpenBSD Platform * + Added NetBSD Platform * + Added SunOS Platform * + Added OpenSolaris Platform * + Added support of the Iceweazel Browser * + Added isChromeFrame() call to check if chromeframe is in use * + Moved the Opera check in front of the Firefox check due to legacy Opera User Agents * + Added the __toString() method (Thanks Deano) * * 2009-11-15: * + Updated the checkes for Firefox * + Added the NOKIA platform * + Added Checks for the NOKIA brower(s) * * 2009-11-08: * + PHP 5.3 Support * + Added support for BlackBerry OS and BlackBerry browser * + Added support for the Opera Mini browser * + Added additional documenation * + Added support for isRobot() and isMobile() * + Added support for Opera version 10 * + Added support for deprecated Netscape Navigator version 9 * + Added support for IceCat * + Added support for Shiretoko * * 2010-04-27 (v1.8): * + Added iPad Support * * 2009-08-18: * + Updated to support PHP 5.3 - removed all deprecated function calls * + Updated to remove all double quotes (") -- converted to single quotes (') * * 2009-04-27: * + Updated the IE check to remove a typo and bug (thanks John) * * 2009-04-22: * + Added detection for GoogleBot * + Added detection for the W3C Validator. * + Added detection for Yahoo! Slurp * * 2009-03-14: * + Added detection for iPods. * + Added Platform detection for iPhones * + Added Platform detection for iPods * * 2009-02-16: (Rick Hale) * + Added version detection for Android phones. * * 2008-12-09: * + Removed unused constant * * 2008-11-07: * + Added Google's Chrome to the detection list * + Added isBrowser(string) to the list of functions special thanks to *Daniel 'mavrick' Lang for the function concept (http://mavrick.id.au) * * * Gary White noted: "Since browser detection is so unreliable, I am * no longer maintaining this script. You are free to use and or * modify/update it as you want, however the author assumes no * responsibility for the accuracy of the detected values." * * Anyone experienced with Gary's script might be interested in these notes: * * Added class constants * Added detection and version detection for Google's Chrome * Updated the version detection for Amaya * Updated the version detection for Firefox * Updated the version detection for Lynx * Updated the version detection for WebTV * Updated the version detection for NetPositive * Updated the version detection for IE * Updated the version detection for OmniWeb * Updated the version detection for iCab * Updated the version detection for Safari * Updated Safari to remove mobile devices (iPhone) * Added detection for iPhone * Added detection for robots * Added detection for mobile devices * Added detection for BlackBerry * Removed Netscape checks (matches heavily with firefox & mozilla) * */ 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';// http://www.opera.com/ const BROWSER_OPERA_MINI = 'Opera Mini'; // http://www.opera.com/mini/ const BROWSER_WEBTV = 'WebTV';// http://www.webtv.net/pc/ const BROWSER_IE = 'Internet Explorer'; // http://www.microsoft.com/ie/ const BROWSER_POCKET_IE = 'Pocket Internet Explorer'; // http://en.wikipedia.org/wiki/Internet_Explorer_Mobile const BROWSER_KONQUEROR = 'Konqueror';// http://www.konqueror.org/ const BROWSER_ICAB = 'iCab'; // http://www.icab.de/ const BROWSER_OMNIWEB = 'OmniWeb';// http://www.omnigroup.com/applications/omniweb/ const BROWSER_FIREBIRD = 'Firebird'; // http://www.ibphoenix.com/ const BROWSER_FIREFOX = 'Firefox';// http://www.mozilla.com/en-US/firefox/firefox.html const BROWSER_ICEWEASEL = 'Iceweasel';// http://www.geticeweasel.org/ const BROWSER_SHIRETOKO = 'Shiretoko';// http://wiki.mozilla.org/Projects/shiretoko const BROWSER_MOZILLA = 'Mozilla';// http://www.mozilla.com/en-US/ const BROWSER_AMAYA = 'Amaya';// http://www.w3.org/Amaya/ const BROWSER_LYNX = 'Lynx'; // http://en.wikipedia.org/wiki/Lynx const BROWSER_SAFARI = 'Safari'; // http://apple.com const BROWSER_IPHONE = 'iPhone'; // http://apple.com const BROWSER_IPOD = 'iPod'; // http://apple.com const BROWSER_IPAD = 'iPad'; // http://apple.com const BROWSER_CHROME = 'Chrome'; // http://www.google.com/chrome const BROWSER_ANDROID = 'Android';// http://www.android.com/ const BROWSER_GOOGLEBOT = 'GoogleBot';// http://en.wikipedia.org/wiki/Googlebot const BROWSER_SLURP = 'Yahoo! Slurp'; // http://en.wikipedia.org/wiki/Yahoo!_Slurp const BROWSER_W3CVALIDATOR = 'W3C Validator'; // http://validator.w3.org/ const BROWSER_BLACKBERRY = 'BlackBerry'; // http://www.blackberry.com/ const BROWSER_ICECAT = 'IceCat'; // http://en.wikipedia.org/wiki/GNU_IceCat const BROWSER_NOKIA_S60 = 'Nokia S60 OSS Browser';// http://en.wikipedia.org/wiki/Web_Browser_for_S60 const BROWSER_NOKIA = 'Nokia Browser';// * all other WAP-based browsers on the Nokia Platform const BROWSER_MSN = 'MSN Browser';// http://explorer.msn.com/ const BROWSER_MSNBOT = 'MSN Bot'; // http://search.msn.com/msnbot.htm // http://en.wikipedia.org/wiki/Msnbot (used for Bing as well) const BROWSER_NETSCAPE_NAVIGATOR = 'Netscape Navigator'; // http://browser.netscape.com/ (DEPRECATED) const BROWSER_GALEON = 'Galeon'; // http://galeon.sourceforge.net/ (DEPRECATED) const BROWSER_NETPOSITIVE = 'NetPositive';// http://en.wikipedia.org/wiki/NetPositive (DEPRECATED) const BROWSER_PHOENIX = 'Phoenix';// http://en.wikipedia.org/wiki/History_of_Mozilla_Firefox (DEPRECATED) 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 True if the browser is the specified browser */ 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 True if the browser is from AOL otherwise false */ public function isAol() { return $this->_is_aol; } /** * Is the browser from a mobile device? * @return boolean True if the browser is from a mobile device otherwise false */ public function isMobile() { return $this->_is_mobile; } /** * Is the browser from a robot (ex Slurp,GoogleBot)? * @return boolean True if the browser is from a robot otherwise false */ 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 $value is the browser a mobile brower or not */ protected function setMobile($value=true) { $this->_is_mobile = $value; } /** * Set the Browser to be a robot * @param boolean $value is the browser a robot or not */ 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" * @since 1.7 * @return boolean True if the browser is using chromeframe */ 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 True if the browser was detected otherwise false */ protected function checkBrowsers() { return ( // well-known, well-used // Special Notes: // (1) Opera must be checked before FireFox due to the odd // user agents used in some older versions of Opera // (2) WebTV is strapped onto Internet Explorer so we must // check for WebTV before IE // (3) (deprecated) Galeon is based on Firefox and needs to be // tested before Firefox is tested // (4) OmniWeb is based on Safari so OmniWeb check must occur // before Safari // (5) Netscape 9+ is based on Firefox so Netscape checks // before FireFox are necessary $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 */ ); } /** * Determine if the user is using a BlackBerry (last updated 1.7) * @return boolean True if the browser is the BlackBerry browser otherwise false */ 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; } /** * Determine if the user is using an AOL User Agent (last updated 1.7) * @return boolean True if the browser is from AOL otherwise 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; } /** * Determine if the browser is the GoogleBot or not (last updated 1.7) * @return boolean True if the browser is the GoogletBot otherwise 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; } /** * Determine if the browser is the MSNBot or not (last updated 1.9) * @return boolean True if the browser is the MSNBot otherwise 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; } /** * Determine if the browser is the W3C Validator or not (last updated 1.7) * @return boolean True if the browser is the W3C Validator otherwise 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; } /** * Determine if the browser is the Yahoo! Slurp Robot or not (last updated 1.7) * @return boolean True if the browser is the Yahoo! Slurp Robot otherwise 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; } /** * Determine if the browser is Internet Explorer or not (last updated 1.7) * @return boolean True if the browser is Internet Explorer otherwise 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; } /** * Determine if the browser is Opera or not (last updated 1.7) * @return boolean True if the browser is Opera otherwise 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; } /** * Determine if the browser is Chrome or not (last updated 1.7) * @return boolean True if the browser is Chrome otherwise 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; } /** * Determine if the browser is WebTv or not (last updated 1.7) * @return boolean True if the browser is WebTv otherwise 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; } /** * Determine if the browser is NetPositive or not (last updated 1.7) * @return boolean True if the browser is NetPositive otherwise 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; } /** * Determine if the browser is Galeon or not (last updated 1.7) * @return boolean True if the browser is Galeon otherwise 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; } /** * Determine if the browser is Konqueror or not (last updated 1.7) * @return boolean True if the browser is Konqueror otherwise 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; } /** * Determine if the browser is iCab or not (last updated 1.7) * @return boolean True if the browser is iCab otherwise 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; } /** * Determine if the browser is OmniWeb or not (last updated 1.7) * @return boolean True if the browser is OmniWeb otherwise 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; } /** * Determine if the browser is Phoenix or not (last updated 1.7) * @return boolean True if the browser is Phoenix otherwise 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; } /** * Determine if the browser is Firebird or not (last updated 1.7) * @return boolean True if the browser is Firebird otherwise 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; } /** * Determine if the browser is Netscape Navigator 9+ or not (last updated 1.7) * NOTE: (http://browser.netscape.com/ - Official support ended on March 1st, 2008) * @return boolean True if the browser is Netscape Navigator 9+ otherwise 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; } /** * Determine if the browser is Shiretoko or not (https://wiki.mozilla.org/Projects/shiretoko) (last updated 1.7) * @return boolean True if the browser is Shiretoko otherwise 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; } /** * Determine if the browser is Ice Cat or not (http://en.wikipedia.org/wiki/GNU_IceCat) (last updated 1.7) * @return boolean True if the browser is Ice Cat otherwise 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; } /** * Determine if the browser is Nokia or not (last updated 1.7) * @return boolean True if the browser is Nokia otherwise 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; } /** * Determine if the browser is Firefox or not (last updated 1.7) * @return boolean True if the browser is Firefox otherwise 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; } /** * Determine if the browser is Firefox or not (last updated 1.7) * @return boolean True if the browser is Firefox otherwise 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; } /** * Determine if the browser is Mozilla or not (last updated 1.7) * @return boolean True if the browser is Mozilla otherwise 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; } /** * Determine if the browser is Lynx or not (last updated 1.7) * @return boolean True if the browser is Lynx otherwise 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; } /** * Determine if the browser is Amaya or not (last updated 1.7) * @return boolean True if the browser is Amaya otherwise 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; } /** * Determine if the browser is Safari or not (last updated 1.7) * @return boolean True if the browser is Safari otherwise 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; } /** * Determine if the browser is iPhone or not (last updated 1.7) * @return boolean True if the browser is iPhone otherwise 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; } /** * Determine if the browser is iPod or not (last updated 1.7) * @return boolean True if the browser is iPod otherwise 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; } /** * Determine if the browser is iPod or not (last updated 1.7) * @return boolean True if the browser is iPod otherwise 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; } /** * Determine if the browser is Android or not (last updated 1.7) * @return boolean True if the browser is Android otherwise 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 (last updated 1.7) */ 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; } } $browser = new Browser(); echo $browser->getBrowser().'<br>'; echo $browser->getVersion().'<br>'; echo $browser->getPlatform().'<br>'; echo $browser->getAolVersion().'<br>'; echo $browser->isMobile().'<br>';
关联:判断来访者所用设备是iPhone、iPad或者电脑(PC)
来源:http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php/
发表评论
-
PHP: 在类(class)中加载动态函数, 变量函数或半变量函数 variable function/method
2016-09-03 07:54 7092最终实例在下方 以前 ... -
MySQL入门 (七) : 储存引擎与资料型态
2016-09-03 07:49 45001 表格与储存引擎 表格(table)是资料库中用来储存 ... -
MySQL入门 (六) : 字元集与资料库
2016-09-03 07:47 44981 Character Set与Collation 任何 ... -
MySQL入门 (五) : CRUD 与资料维护
2016-09-03 07:46 54131 取得表格资讯 1.1 DESCRIBE指令 「 ... -
MySQL入门 (四) : JOIN 与UNION 查询
2016-09-03 07:42 44351 使用多个表格 在「world」资料库的「countr ... -
PHP: 关键字global 和 超全局变量$GLOBALS的用法、解释、区别
2016-08-31 12:07 4977$GLOBALS 是一个关联数组,每一个变量为一个 ... -
MySQL入门 (三) : 运算式与函式
2016-08-31 12:01 4323运算式(expressions)已经 ... -
MySQL入门 (二) : SELECT 基础查询
2016-08-31 11:56 46291 查询资料前的基本概念 1.1 表格、纪录 ... -
MySQL入门 (一) : 资料库概论与MySQL的安装
2016-08-31 11:51 43911. 储存与管理资料 储存与管理资料一直是资讯应用上最基本 ... -
MySQL入门 (九) : 子查询 Subquery
2016-08-30 02:26 43931 一个叙述中的查询叙述 子查询(subquery)是一 ... -
PHP: 用readonly取代disabled来获取input值 submit a disabled input in a form could not ge
2016-08-30 02:21 2645The form is like below; <f ... -
PHP7革新与性能优化
2016-08-30 02:20 2093有幸参与2015年的PHP技 ... -
Mysql: 图解 inner join、left join、right join、full outer join、union、union all的区别
2016-08-18 06:03 3065对于SQL的Join,在学习起来可能是比较乱的。我们知道, ... -
Comet 反Ajax: 基于jQuery与PHP实现Ajax长轮询(LongPoll)
2016-08-18 06:00 1325传统的AJAX轮询方式,客服端以用户定义的时间间隔去服务器上 ... -
PHP:ServerPush (Comet推送) 技术的探讨
2016-08-18 05:58 986PHP中Push(推送)技术的探讨 [http://vi ... -
PHP: 手把手编写自己的 MVC 框架实例教程
2016-08-16 05:33 17591 什么是MVC MVC模式(Model-View-Con ... -
PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD)
2016-07-29 12:55 1695原文: PHP5: mysqli 插入, 查询, 更新 ... -
MongoDB 教程索引 (附有视频)
2016-07-27 10:54 690MongoDB 教程索引 MongoDB 教程一: ... -
Node.js 模块之Nimble流程控制
2016-07-18 12:59 1036NodeJS异步的特性有时候 ... -
Node.js web应用模块之Supervisor
2016-07-18 12:56 2280在开发或调试Node.js应 ...
相关推荐
php-browser-detector, 浏览器,操作系统( 操作系统),设备和语言检测PHP库 浏览器检测器 从PHP中检测用户。操作系统。设备和语言的浏览器。 因为浏览器检测并不总是可以靠的并且随时发展,所以请小心地使用它们。...
通过PHP检测用户的浏览器,操作系统,设备和语言。 由于浏览器检测并不总是可靠的并且随时都在发展,因此请谨慎使用并随时做出贡献。 要求 该库使用PHP 5.3+。 安装 建议您安装PHP Browser库。 为此,请运行以下...
## WDS浏览器检测一个轻量级的插件,用于检测浏览器,操作系统和设备。 由Chris Schuld的(略)修改版本的安装下载,解压缩并将其放在WordPress /plugins/目录中。 通过WordPress插件管理器激活。注意事项此PHP脚本...
useragentstringdetect 检测用户操作系统和Web浏览器(PHP)
平板电脑,移动设备,电视,汽车,控制台等),客户端(浏览器,提要阅读器,媒体播放器,PIM等),操作系统,品牌和型号。非常简单,只需将piwik / device-detector添加到您的项目需求中,并使用如下代码:require_...
设备检测器代码状态描述通用设备检测库,用于解析用户代理并检测设备(台式机,平板电脑,移动设备,电视,汽车,控制台等),客户端(浏览器,提要阅读器,媒体播放器,PIM等),操作系统,品牌和模型。用法通过...
一个非常简单的类,它接收用户代理字符串,并返回浏览器名称(Firefox,Chrome,Opera等)以及操作系统(Mac,Windows,Android等)。 安装 建议您安装PHP Browser库。 为此,将以下行添加到您的composer.json文件。...
NET的通用设备检测库,可解析用户代理并检测设备(台式机,平板电脑,移动设备,电视,汽车,控制台等),客户端(浏览器,提要阅读器,媒体播放器,PIM等),运行中的设备系统,品牌和型号。 这是流行PHP库到C#的...
一些网站常常通过判断 UA 来给不同的操作系统、不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正常显示,但通过伪装 UA 可以绕过检测。浏览器的 UA 字串标准格式为: 浏览器标识 (操作系统...
80检测操作系统和浏览器类型 81用PHP4连接一个mysql数据库操作的演示 82//本例是用PHP4实现向一个mysql数据表添加记录, 83//本例是用PHP4实现修改一个mysql数据表 84本例是用PHP4实现删除一个mysql数据记录 85//本...
BBClone是一个基于PHP的服务端应用,为你报告详细的站点流量和访客数据。...更新:浏览器,操作系统和机器人的新检测,感谢提交更新的所有论坛用户。 bbclone 截图 相关阅读 同类推荐:站长常用源码
包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python...
BBClone是一个基于PHP的服务端应用,为你报告详细的站点流量和访客数据,BBClone能够与时下最受欢迎的发布平台容易的集成,比如Drupal,...更新:浏览器,操作系统和机器人的新检测,感谢提交更新的所有论坛用户。
========================================================== 关键字网站生成系统PHP版 ... ... =====================================================...注:页面中的嵌入框架是用来检测系统有无最新版本,请放心使用。
2010年,JTBC主推dotnet版本(V2.0)以及jsp版本(V2.0),这2个版本在CMS的操作方式上做了最新的尝试,将我们日常生活中最常用的OS(windows,linux)的操作模式融入到CMS中,摈弃了以往传统的左右分栏的管理模式,使CMS的...
Linux是最强大的开源操作系统,Apache是最强大的开源Web服务器软件,MySQL是最流行的开源数据库系统,PHP是最流行的开源Web开发语言。1998年Michael Kunze在电脑杂志C'T撰写的文章中首次使用了缩略语LAMP。它所组成...
好文本移动网站文章管理系统(GMArticle)简介随着智能手机等移动设备的普及,移动网站建设正渐趋重要。移动浏览器已经可以处理一个普通网站,每天都有非常...2、系统信息环境检测3、后台操作日志,记录后台用户信息和
实例017 Linux操作系统下启动XAMPP 32 实例018 设置MySQL数据库root用户的密码 33 实例019 第5个PHP程序 34 1.6 Dreamweaver开发工具 35 实例020 Dreamweaver中编码格式的选择 35 实例021 Dreamweaver中创建表格 36 ...
第6章 文件系统与文本数据操作 91 6.1 PHP中目录操作详解 91 6.1.1 打开目录 91 6.1.2 关闭目录 91 6.1.3 读取目录中的文件 92 6.1.4 创建目录 92 6.1.5 删除目录 93 6.2 PHP中文件操作详解 93 6.2.1 打开文件 93 ...
主要介绍了PHP检测移动设备类mobile detection使用实例,mobile detection可以检测到绝大部分手机、平板电脑的操作系统、浏览器等数据,需要的朋友可以参考下