Home Backend Development PHP Tutorial PHP判断浏览器类型

PHP判断浏览器类型

Jun 20, 2016 pm 01:03 PM
browser false gt return this

1、下面我们就来通过 $_SERVER['HTTP_USER_AGENT'] 来写一个php判断浏览器类型的办法。

<p>function my_get_browser(){</p>	if(empty($_SERVER['HTTP_USER_AGENT'])){<br />		return '命令行,机器人来了!';<br />	}<br />	if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 9.0')){<br />		return 'Internet Explorer 9.0';<br />	}<br />	if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 8.0')){<br />		return 'Internet Explorer 8.0';<br />	}<br />	if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 7.0')){<br />		return 'Internet Explorer 7.0';<br />	}<br />	if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 6.0')){<br />		return 'Internet Explorer 6.0';<br />	}<br />	if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'Firefox')){<br />		return 'Firefox';<br />	}<br />	if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'Chrome')){<br />		return 'Chrome';<br />	}<br />	if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'Safari')){<br />		return 'Safari';<br />	}<br />	if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'Opera')){<br />		return 'Opera';<br />	}<br />	if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'360SE')){<br />		return '360SE';<br />	}<br /><p>}</p>
Copy after login

这里主要用到了 $_SERVER['HTTP_USER_AGENT'],这个常量是用来检查浏览页面的访问者在用什么操作系统(包括版本号)浏览器(包括版本号)和用户个人偏好。用法很简单,自己在程序里面打印出来看看就明白了。

2、另外 php 判断浏览器的类型还可以通过 php 系统函数 get_browser() 函数,这个函数将会返回用户浏览器的一些性能数据。

该函数通过查阅用户的 browscap.ini 文件,来测定用户浏览器的性能。若成功,则该函数返回包含用户浏览器信息的一个对象或一个数组,若失败,则返回 false。get_browser 语法get_browser(user_agent,return_array)这个函数有两个参数,参数意义解释如下:user_agent 可选。规定 HTTP 用户代理的名称。默认是 $HTTP_USER_AGENT 的值。您可以通过设置 NULL 绕过该参数。


return_array 可选。如果该参数设置为 true,本函数会返回一个数组而不是对象。对于 php 通过 $_SERVER['HTTP_USER_AGENT'] 和 get_browser 获取的浏览器信息,我们可以通过如下例子来认识一下:

<p><?php</p>echo $_SERVER['HTTP_USER_AGENT'] . "<br /><br />";<br />$browser = get_browser(null,true);<br />print_r($browser);<br /><p>?></p>
Copy after login

结果将输出:

Mozilla/4.0

(compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)Array(
[browser_name_regex] => ^mozilla/.\.0
(compatible; msie 6\.0.*;.*windows nt 5\.1.*\.net clr.*).*$
[browser_name_pattern] => Mozilla/?.0
(compatible; MSIE 6.0*;*Windows NT 5.1*.NET CLR*)*
[parent] => IE 6.0
[platform] => WinXP
[netclr] => 1
[browser] => IE
[version] => 6.0
[majorver] => 6
[minorver] => 0
[css] => 2
[frames] => 1
[iframes] => 1
[tables] => 1
[cookies] => 1
[backgroundsounds] => 1
[vbscript] => 1
[javascript] => 1
[javaapplets] => 1
[activexcontrols] => 1
[cdf] => 1
[aol] =>
[beta] =>
[win16] =>
[crawler] =>
[stripper] =>
[wap] =>
[ak] =>
[sk] =>

)

但是通过PHP的get_browser()函数获取客户端浏览器相关信息是有条件的,如果你直接使用一般会报出如下这个错误:

Warning: get_browser() [function.get-browser]: browscap ini directive not set in ......

通过查询 php 手册,得到的解释是:为了使用这个函数,你必须在php.ini文件里面增加一句指向 browscap.ini 文件的配置,browscap.ini文件里面记录了所有已存在的浏览器的类型及其信息,所以你要下载最新的这个文件,下载browscap.ini后放到服务器某个位置,get_browser()在使用时就是将获取的客户端信息与此文件进行对比,如果能找到,则返回相应类型。由上看来要想使用 get_browser() 获取浏览器类型代价不小啊!

3、另外还有一种php判断浏览器类型的办法,即使用一个国外牛人写的开源代码。国外有个叫mavrick的网站,上面有关于浏览器的项目,一直更新所写的Browser类,我最新看到的这个类可以获取包括iPhone、BlackBerry、win、mac、linux、OS、BeOS等平台上的浏览器信息,功能可以说是十分强大。

下载这个文件时要根据自己使用的PHP版本去选择。该类的具体代码如下:

<p><?php</p>/**<br /> * File: Browser.php<br /> * Author: Chris Schuld (http://chrisschuld.com/)<br /> * http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php/<br /> * Last Modified: August 20th, 2010<br /> * @version 1.9<br /> * @package PegasusPHP<br /> *<br /> * Copyright (C) 2008-2010 Chris Schuld  (chris@chrisschuld.com)<br /> *<br /> * This program is free software; you can redistribute it and/or<br /> * modify it under the terms of the GNU General Public License as<br /> * published by the Free Software Foundation; either version 2 of<br /> * the License, or (at your option) any later version.<br /> *<br /> * This program is distributed in the hope that it will be useful,<br /> * but WITHOUT ANY WARRANTY; without even the implied warranty of<br /> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the<br /> * GNU General Public License for more details at:<br /> * http://www.gnu.org/copyleft/gpl.html<br /> *<br /> *<br /> * Typical Usage:<br /> *<br /> *   $browser = new Browser();<br /> *   if( $browser->getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) {<br /> *   	echo 'You have FireFox version 2 or greater';<br /> *   }<br /> *<br /> * User Agents Sampled from: http://www.useragentstring.com/<br /> *<br /> * This implementation is based on the original work from Gary White<br /> * http://apptools.com/phptools/browser/<br /> *<br /> *<br /> */<br /><br />class Browser {<br />	private $_agent = '';<br />	private $_browser_name = '';<br />	private $_version = '';<br />	private $_platform = '';<br />	private $_os = '';<br />	private $_is_aol = false;<br />	private $_is_mobile = false;<br />	private $_is_robot = false;<br />	private $_aol_version = '';<br /><br />	const BROWSER_UNKNOWN = 'unknown';<br />	const VERSION_UNKNOWN = 'unknown';<br /><br />	const BROWSER_OPERA = 'Opera';// http://www.opera.com/<br />	const BROWSER_OPERA_MINI = 'Opera Mini';  // http://www.opera.com/mini/<br />	const BROWSER_WEBTV = 'WebTV';// http://www.webtv.net/pc/<br />	const BROWSER_IE = 'Internet Explorer';   // http://www.microsoft.com/ie/<br />	const BROWSER_POCKET_IE = 'Pocket Internet Explorer'; // http://en.wikipedia.org/wiki/Internet_Explorer_Mobile<br />	const BROWSER_KONQUEROR = 'Konqueror';// http://www.konqueror.org/<br />	const BROWSER_ICAB = 'iCab';  // http://www.icab.de/<br />	const BROWSER_OMNIWEB = 'OmniWeb';// http://www.omnigroup.com/applications/omniweb/<br />	const BROWSER_FIREBIRD = 'Firebird';  // http://www.ibphoenix.com/<br />	const BROWSER_FIREFOX = 'Firefox';// http://www.mozilla.com/en-US/firefox/firefox.html<br />	const BROWSER_ICEWEASEL = 'Iceweasel';// http://www.geticeweasel.org/<br />	const BROWSER_SHIRETOKO = 'Shiretoko';// http://wiki.mozilla.org/Projects/shiretoko<br />	const BROWSER_MOZILLA = 'Mozilla';// http://www.mozilla.com/en-US/<br />	const BROWSER_AMAYA = 'Amaya';// http://www.w3.org/Amaya/<br />	const BROWSER_LYNX = 'Lynx';  // http://en.wikipedia.org/wiki/Lynx<br />	const BROWSER_SAFARI = 'Safari';  // http://apple.com<br />	const BROWSER_IPHONE = 'iPhone';  // http://apple.com<br />	const BROWSER_IPOD = 'iPod';  // http://apple.com<br />	const BROWSER_IPAD = 'iPad';  // http://apple.com<br />	const BROWSER_CHROME = 'Chrome';  // http://www.google.com/chrome<br />	const BROWSER_ANDROID = 'Android';// http://www.android.com/<br />	const BROWSER_GOOGLEBOT = 'GoogleBot';// http://en.wikipedia.org/wiki/Googlebot<br />	const BROWSER_SLURP = 'Yahoo! Slurp'; // http://en.wikipedia.org/wiki/Yahoo!_Slurp<br />	const BROWSER_W3CVALIDATOR = 'W3C Validator'; // http://validator.w3.org/<br />	const BROWSER_BLACKBERRY = 'BlackBerry';  // http://www.blackberry.com/<br />	const BROWSER_ICECAT = 'IceCat';  // http://en.wikipedia.org/wiki/GNU_IceCat<br />	const BROWSER_NOKIA_S60 = 'Nokia S60 OSS Browser';// http://en.wikipedia.org/wiki/Web_Browser_for_S60<br />	const BROWSER_NOKIA = 'Nokia Browser';// * all other WAP-based browsers on the Nokia Platform<br />	const BROWSER_MSN = 'MSN Browser';// http://explorer.msn.com/<br />	const BROWSER_MSNBOT = 'MSN Bot'; // http://search.msn.com/msnbot.htm<br />	  // http://en.wikipedia.org/wiki/Msnbot  (used for Bing as well)<br />	<br />	const BROWSER_NETSCAPE_NAVIGATOR = 'Netscape Navigator';  // http://browser.netscape.com/ (DEPRECATED)<br />	const BROWSER_GALEON = 'Galeon';  // http://galeon.sourceforge.net/ (DEPRECATED)<br />	const BROWSER_NETPOSITIVE = 'NetPositive';// http://en.wikipedia.org/wiki/NetPositive (DEPRECATED)<br />	const BROWSER_PHOENIX = 'Phoenix';// http://en.wikipedia.org/wiki/History_of_Mozilla_Firefox (DEPRECATED)<br /><br />	const PLATFORM_UNKNOWN = 'unknown';<br />	const PLATFORM_WINDOWS = 'Windows';<br />	const PLATFORM_WINDOWS_CE = 'Windows CE';<br />	const PLATFORM_APPLE = 'Apple';<br />	const PLATFORM_LINUX = 'Linux';<br />	const PLATFORM_OS2 = 'OS/2';<br />	const PLATFORM_BEOS = 'BeOS';<br />	const PLATFORM_IPHONE = 'iPhone';<br />	const PLATFORM_IPOD = 'iPod';<br />	const PLATFORM_IPAD = 'iPad';<br />	const PLATFORM_BLACKBERRY = 'BlackBerry';<br />	const PLATFORM_NOKIA = 'Nokia';<br />	const PLATFORM_FREEBSD = 'FreeBSD';<br />	const PLATFORM_OPENBSD = 'OpenBSD';<br />	const PLATFORM_NETBSD = 'NetBSD';<br />	const PLATFORM_SUNOS = 'SunOS';<br />	const PLATFORM_OPENSOLARIS = 'OpenSolaris';<br />	const PLATFORM_ANDROID = 'Android';<br />	<br />	const OPERATING_SYSTEM_UNKNOWN = 'unknown';<br /><br />	public function Browser($useragent="") {<br />		$this->reset();<br />		if( $useragent != "" ) {<br />			$this->setUserAgent($useragent);<br />		}<br />		else {<br />			$this->determine();<br />		}<br />	}<br /><br />	/**<br />	* Reset all properties<br />	*/<br />	public function reset() {<br />		$this->_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "";<br />		$this->_browser_name = self::BROWSER_UNKNOWN;<br />		$this->_version = self::VERSION_UNKNOWN;<br />		$this->_platform = self::PLATFORM_UNKNOWN;<br />		$this->_os = self::OPERATING_SYSTEM_UNKNOWN;<br />		$this->_is_aol = false;<br />		$this->_is_mobile = false;<br />		$this->_is_robot = false;<br />		$this->_aol_version = self::VERSION_UNKNOWN;<br />	}<br /><br />	/**<br />	* Check to see if the specific browser is valid<br />	* @param string $browserName<br />	* @return True if the browser is the specified browser<br />	*/<br />	function isBrowser($browserName) { return( 0 == strcasecmp($this->_browser_name, trim($browserName))); }<br /><br />	/**<br />	* The name of the browser.  All return types are from the class contants<br />	* @return string Name of the browser<br />	*/<br />	public function getBrowser() { return $this->_browser_name; }<br />	/**<br />	* Set the name of the browser<br />	* @param $browser The name of the Browser<br />	*/<br />	public function setBrowser($browser) { return $this->_browser_name = $browser; }<br />	/**<br />	* The name of the platform.  All return types are from the class contants<br />	* @return string Name of the browser<br />	*/<br />	public function getPlatform() { return $this->_platform; }<br />	/**<br />	* Set the name of the platform<br />	* @param $platform The name of the Platform<br />	*/<br />	public function setPlatform($platform) { return $this->_platform = $platform; }<br />	/**<br />	* The version of the browser.<br />	* @return string Version of the browser (will only contain alpha-numeric characters and a period)<br />	*/<br />	public function getVersion() { return $this->_version; }<br />	/**<br />	* Set the version of the browser<br />	* @param $version The version of the Browser<br />	*/<br />	public function setVersion($version) { $this->_version = preg_replace('/[^0-9,.,a-z,A-Z-]/','',$version); }<br />	/**<br />	* The version of AOL.<br />	* @return string Version of AOL (will only contain alpha-numeric characters and a period)<br />	*/<br />	public function getAolVersion() { return $this->_aol_version; }<br />	/**<br />	* Set the version of AOL<br />	* @param $version The version of AOL<br />	*/<br />	public function setAolVersion($version) { $this->_aol_version = preg_replace('/[^0-9,.,a-z,A-Z]/','',$version); }<br />	/**<br />	* Is the browser from AOL?<br />	* @return boolean True if the browser is from AOL otherwise false<br />	*/<br />	public function isAol() { return $this->_is_aol; }<br />	/**<br />	* Is the browser from a mobile device?<br />	* @return boolean True if the browser is from a mobile device otherwise false<br />	*/<br />	public function isMobile() { return $this->_is_mobile; }<br />	/**<br />	* Is the browser from a robot (ex Slurp,GoogleBot)?<br />	* @return boolean True if the browser is from a robot otherwise false<br />	*/<br />	public function isRobot() { return $this->_is_robot; }<br />	/**<br />	* Set the browser to be from AOL<br />	* @param $isAol<br />	*/<br />	public function setAol($isAol) { $this->_is_aol = $isAol; }<br />	/**<br />	 * Set the Browser to be mobile<br />	 * @param boolean $value is the browser a mobile brower or not<br />	 */<br />	protected function setMobile($value=true) { $this->_is_mobile = $value; }<br />	/**<br />	 * Set the Browser to be a robot<br />	 * @param boolean $value is the browser a robot or not<br />	 */<br />	protected function setRobot($value=true) { $this->_is_robot = $value; }<br />	/**<br />	* Get the user agent value in use to determine the browser<br />	* @return string The user agent from the HTTP header<br />	*/<br />	public function getUserAgent() { return $this->_agent; }<br />	/**<br />	* Set the user agent value (the construction will use the HTTP header value - this will overwrite it)<br />	* @param $agent_string The value for the User Agent<br />	*/<br />	public function setUserAgent($agent_string) {<br />		$this->reset();<br />		$this->_agent = $agent_string;<br />		$this->determine();<br />	}<br />	/**<br />	 * Used to determine if the browser is actually "chromeframe"<br />	 * @since 1.7<br />	 * @return boolean True if the browser is using chromeframe<br />	 */<br />	public function isChromeFrame() {<br />		return( strpos($this->_agent,"chromeframe") !== false );<br />	}<br />	/**<br />	* Returns a formatted string with a summary of the details of the browser.<br />	* @return string formatted string with a summary of the browser<br />	*/<br />	public function __toString() {<br />		return "<strong>Browser Name:</strong>{$this->getBrowser()}<br/>\n" .<br />		   "<strong>Browser Version:</strong>{$this->getVersion()}<br/>\n" .<br />		   "<strong>Browser User Agent String:</strong>{$this->getUserAgent()}<br/>\n" .<br />		   "<strong>Platform:</strong>{$this->getPlatform()}<br/>";<br />	}<br />	/**<br />	 * Protected routine to calculate and determine what the browser is in use (including platform)<br />	 */<br />	protected function determine() {<br />		$this->checkPlatform();<br />		$this->checkBrowsers();<br />		$this->checkForAol();<br />	}<br />	/**<br />	 * Protected routine to determine the browser type<br />	 * @return boolean True if the browser was detected otherwise false<br />	 */<br />	 protected function checkBrowsers() {<br />		return (<br />			// well-known, well-used<br />			// Special Notes:<br />			// (1) Opera must be checked before FireFox due to the odd<br />			// user agents used in some older versions of Opera<br />			// (2) WebTV is strapped onto Internet Explorer so we must<br />			// check for WebTV before IE<br />			// (3) (deprecated) Galeon is based on Firefox and needs to be<br />			// tested before Firefox is tested<br />			// (4) OmniWeb is based on Safari so OmniWeb check must occur<br />			// before Safari<br />			// (5) Netscape 9+ is based on Firefox so Netscape checks<br />			// before FireFox are necessary<br />			$this->checkBrowserWebTv() ||<br />			$this->checkBrowserInternetExplorer() ||<br />			$this->checkBrowserOpera() ||<br />			$this->checkBrowserGaleon() ||<br />			$this->checkBrowserNetscapeNavigator9Plus() ||<br />			$this->checkBrowserFirefox() ||<br />			$this->checkBrowserChrome() ||<br />			$this->checkBrowserOmniWeb() ||<br /><br />			// common mobile<br />			$this->checkBrowserAndroid() ||<br />			$this->checkBrowseriPad() ||<br />			$this->checkBrowseriPod() ||<br />			$this->checkBrowseriPhone() ||<br />			$this->checkBrowserBlackBerry() ||<br />			$this->checkBrowserNokia() ||<br /><br />			// common bots<br />			$this->checkBrowserGoogleBot() ||<br />			$this->checkBrowserMSNBot() ||<br />			$this->checkBrowserSlurp() ||<br /><br />			// WebKit base check (post mobile and others)<br />			$this->checkBrowserSafari() ||<br />			<br />			// everyone else<br />			$this->checkBrowserNetPositive() ||<br />			$this->checkBrowserFirebird() ||<br />			$this->checkBrowserKonqueror() ||<br />			$this->checkBrowserIcab() ||<br />			$this->checkBrowserPhoenix() ||<br />			$this->checkBrowserAmaya() ||<br />			$this->checkBrowserLynx() ||<br />			$this->checkBrowserShiretoko() ||<br />			$this->checkBrowserIceCat() ||<br />			$this->checkBrowserW3CValidator() ||<br />			$this->checkBrowserMozilla() /* Mozilla is such an open standard that you must check it last */<br />		);<br />	}<br /><br />	/**<br />	 * Determine if the user is using a BlackBerry (last updated 1.7)<br />	 * @return boolean True if the browser is the BlackBerry browser otherwise false<br />	 */<br />	protected function checkBrowserBlackBerry() {<br />		if( stripos($this->_agent,'blackberry') !== false ) {<br />			$aresult = explode("/",stristr($this->_agent,"BlackBerry"));<br />			$aversion = explode(' ',$aresult[1]);<br />			$this->setVersion($aversion[0]);<br />			$this->_browser_name = self::BROWSER_BLACKBERRY;<br />			$this->setMobile(true);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the user is using an AOL User Agent (last updated 1.7)<br />	 * @return boolean True if the browser is from AOL otherwise false<br />	 */<br />	protected function checkForAol() {<br />			$this->setAol(false);<br />			$this->setAolVersion(self::VERSION_UNKNOWN);<br /><br />			if( stripos($this->_agent,'aol') !== false ) {<br />			$aversion = explode(' ',stristr($this->_agent, 'AOL'));<br />			$this->setAol(true);<br />			$this->setAolVersion(preg_replace('/[^0-9\.a-z]/i', '', $aversion[1]));<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is the GoogleBot or not (last updated 1.7)<br />	 * @return boolean True if the browser is the GoogletBot otherwise false<br />	 */<br />	protected function checkBrowserGoogleBot() {<br />		if( stripos($this->_agent,'googlebot') !== false ) {<br />				$aresult = explode('/',stristr($this->_agent,'googlebot'));<br />				$aversion = explode(' ',$aresult[1]);<br />				$this->setVersion(str_replace(';','',$aversion[0]));<br />				$this->_browser_name = self::BROWSER_GOOGLEBOT;<br />				$this->setRobot(true);<br />				return true;<br />		}<br />		return false;<br />	}<br /><br />		/**<br />	 * Determine if the browser is the MSNBot or not (last updated 1.9)<br />	 * @return boolean True if the browser is the MSNBot otherwise false<br />	 */<br />		protected function checkBrowserMSNBot() {<br />			if( stripos($this->_agent,"msnbot") !== false ) {<br />				$aresult = explode("/",stristr($this->_agent,"msnbot"));<br />				$aversion = explode(" ",$aresult[1]);<br />				$this->setVersion(str_replace(";","",$aversion[0]));<br />				$this->_browser_name = self::BROWSER_MSNBOT;<br />				$this->setRobot(true);<br />				return true;<br />			}<br />			return false;<br />		}	<br />	<br />	/**<br />	 * Determine if the browser is the W3C Validator or not (last updated 1.7)<br />	 * @return boolean True if the browser is the W3C Validator otherwise false<br />	 */<br />	protected function checkBrowserW3CValidator() {<br />		if( stripos($this->_agent,'W3C-checklink') !== false ) {<br />			$aresult = explode('/',stristr($this->_agent,'W3C-checklink'));<br />			$aversion = explode(' ',$aresult[1]);<br />			$this->setVersion($aversion[0]);<br />			$this->_browser_name = self::BROWSER_W3CVALIDATOR;<br />			return true;<br />		}<br />		else if( stripos($this->_agent,'W3C_Validator') !== false ) {<br />				// Some of the Validator versions do not delineate w/ a slash - add it back in<br />				$ua = str_replace("W3C_Validator ", "W3C_Validator/", $this->_agent);<br />			$aresult = explode('/',stristr($ua,'W3C_Validator'));<br />			$aversion = explode(' ',$aresult[1]);<br />			$this->setVersion($aversion[0]);<br />			$this->_browser_name = self::BROWSER_W3CVALIDATOR;<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is the Yahoo! Slurp Robot or not (last updated 1.7)<br />	 * @return boolean True if the browser is the Yahoo! Slurp Robot otherwise false<br />	 */<br />	protected function checkBrowserSlurp() {<br />		if( stripos($this->_agent,'slurp') !== false ) {<br />			$aresult = explode('/',stristr($this->_agent,'Slurp'));<br />			$aversion = explode(' ',$aresult[1]);<br />			$this->setVersion($aversion[0]);<br />			$this->_browser_name = self::BROWSER_SLURP;<br />				$this->setRobot(true);<br />				$this->setMobile(false);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is Internet Explorer or not (last updated 1.7)<br />	 * @return boolean True if the browser is Internet Explorer otherwise false<br />	 */<br />	protected function checkBrowserInternetExplorer() {<br /><br />		// Test for v1 - v1.5 IE<br />		if( stripos($this->_agent,'microsoft internet explorer') !== false ) {<br />			$this->setBrowser(self::BROWSER_IE);<br />			$this->setVersion('1.0');<br />			$aresult = stristr($this->_agent, '/');<br />			if( preg_match('/308|425|426|474|0b1/i', $aresult) ) {<br />				$this->setVersion('1.5');<br />			}<br />				return true;<br />		}<br />		// Test for versions > 1.5<br />		else if( stripos($this->_agent,'msie') !== false && stripos($this->_agent,'opera') === false ) {<br />			// See if the browser is the odd MSN Explorer<br />			if( stripos($this->_agent,'msnb') !== false ) {<br />				$aresult = explode(' ',stristr(str_replace(';','; ',$this->_agent),'MSN'));<br />				$this->setBrowser( self::BROWSER_MSN );<br />				$this->setVersion(str_replace(array('(',')',';'),'',$aresult[1]));<br />				return true;<br />			}<br />			$aresult = explode(' ',stristr(str_replace(';','; ',$this->_agent),'msie'));<br />			$this->setBrowser( self::BROWSER_IE );<br />			$this->setVersion(str_replace(array('(',')',';'),'',$aresult[1]));<br />			return true;<br />		}<br />		// Test for Pocket IE<br />		else if( stripos($this->_agent,'mspie') !== false || stripos($this->_agent,'pocket') !== false ) {<br />			$aresult = explode(' ',stristr($this->_agent,'mspie'));<br />			$this->setPlatform( self::PLATFORM_WINDOWS_CE );<br />			$this->setBrowser( self::BROWSER_POCKET_IE );<br />			$this->setMobile(true);<br /><br />			if( stripos($this->_agent,'mspie') !== false ) {<br />				$this->setVersion($aresult[1]);<br />			}<br />			else {<br />				$aversion = explode('/',$this->_agent);<br />				$this->setVersion($aversion[1]);<br />			}<br />			return true;<br />		}<br />			return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is Opera or not (last updated 1.7)<br />	 * @return boolean True if the browser is Opera otherwise false<br />	 */<br />	protected function checkBrowserOpera() {<br />		if( stripos($this->_agent,'opera mini') !== false ) {<br />			$resultant = stristr($this->_agent, 'opera mini');<br />			if( preg_match('/\//',$resultant) ) {<br />				$aresult = explode('/',$resultant);<br />				$aversion = explode(' ',$aresult[1]);<br />				$this->setVersion($aversion[0]);<br />				}<br />			else {<br />				$aversion = explode(' ',stristr($resultant,'opera mini'));<br />				$this->setVersion($aversion[1]);<br />			}<br />			$this->_browser_name = self::BROWSER_OPERA_MINI;<br />				$this->setMobile(true);<br />				return true;<br />		}<br />		else if( stripos($this->_agent,'opera') !== false ) {<br />			$resultant = stristr($this->_agent, 'opera');<br />			if( preg_match('/Version\/(10.*)$/',$resultant,$matches) ) {<br />				$this->setVersion($matches[1]);<br />			}<br />			else if( preg_match('/\//',$resultant) ) {<br />				$aresult = explode('/',str_replace("("," ",$resultant));<br />				$aversion = explode(' ',$aresult[1]);<br />				$this->setVersion($aversion[0]);<br />			}<br />			else {<br />				$aversion = explode(' ',stristr($resultant,'opera'));<br />				$this->setVersion(isset($aversion[1])?$aversion[1]:"");<br />			}<br />			$this->_browser_name = self::BROWSER_OPERA;<br />			return true;<br />		}<br />			return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is Chrome or not (last updated 1.7)<br />	 * @return boolean True if the browser is Chrome otherwise false<br />	 */<br />	protected function checkBrowserChrome() {<br />		if( stripos($this->_agent,'Chrome') !== false ) {<br />			$aresult = explode('/',stristr($this->_agent,'Chrome'));<br />			$aversion = explode(' ',$aresult[1]);<br />			$this->setVersion($aversion[0]);<br />			$this->setBrowser(self::BROWSER_CHROME);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br /><br />	/**<br />	 * Determine if the browser is WebTv or not (last updated 1.7)<br />	 * @return boolean True if the browser is WebTv otherwise false<br />	 */<br />	protected function checkBrowserWebTv() {<br />		if( stripos($this->_agent,'webtv') !== false ) {<br />			$aresult = explode('/',stristr($this->_agent,'webtv'));<br />			$aversion = explode(' ',$aresult[1]);<br />			$this->setVersion($aversion[0]);<br />			$this->setBrowser(self::BROWSER_WEBTV);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is NetPositive or not (last updated 1.7)<br />	 * @return boolean True if the browser is NetPositive otherwise false<br />	 */<br />	protected function checkBrowserNetPositive() {<br />		if( stripos($this->_agent,'NetPositive') !== false ) {<br />			$aresult = explode('/',stristr($this->_agent,'NetPositive'));<br />			$aversion = explode(' ',$aresult[1]);<br />			$this->setVersion(str_replace(array('(',')',';'),'',$aversion[0]));<br />			$this->setBrowser(self::BROWSER_NETPOSITIVE);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is Galeon or not (last updated 1.7)<br />	 * @return boolean True if the browser is Galeon otherwise false<br />	 */<br />	protected function checkBrowserGaleon() {<br />		if( stripos($this->_agent,'galeon') !== false ) {<br />			$aresult = explode(' ',stristr($this->_agent,'galeon'));<br />			$aversion = explode('/',$aresult[0]);<br />			$this->setVersion($aversion[1]);<br />			$this->setBrowser(self::BROWSER_GALEON);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is Konqueror or not (last updated 1.7)<br />	 * @return boolean True if the browser is Konqueror otherwise false<br />	 */<br />	protected function checkBrowserKonqueror() {<br />		if( stripos($this->_agent,'Konqueror') !== false ) {<br />			$aresult = explode(' ',stristr($this->_agent,'Konqueror'));<br />			$aversion = explode('/',$aresult[0]);<br />			$this->setVersion($aversion[1]);<br />			$this->setBrowser(self::BROWSER_KONQUEROR);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is iCab or not (last updated 1.7)<br />	 * @return boolean True if the browser is iCab otherwise false<br />	 */<br />	protected function checkBrowserIcab() {<br />		if( stripos($this->_agent,'icab') !== false ) {<br />			$aversion = explode(' ',stristr(str_replace('/',' ',$this->_agent),'icab'));<br />			$this->setVersion($aversion[1]);<br />			$this->setBrowser(self::BROWSER_ICAB);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is OmniWeb or not (last updated 1.7)<br />	 * @return boolean True if the browser is OmniWeb otherwise false<br />	 */<br />	protected function checkBrowserOmniWeb() {<br />		if( stripos($this->_agent,'omniweb') !== false ) {<br />			$aresult = explode('/',stristr($this->_agent,'omniweb'));<br />			$aversion = explode(' ',isset($aresult[1])?$aresult[1]:"");<br />			$this->setVersion($aversion[0]);<br />			$this->setBrowser(self::BROWSER_OMNIWEB);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is Phoenix or not (last updated 1.7)<br />	 * @return boolean True if the browser is Phoenix otherwise false<br />	 */<br />	protected function checkBrowserPhoenix() {<br />		if( stripos($this->_agent,'Phoenix') !== false ) {<br />			$aversion = explode('/',stristr($this->_agent,'Phoenix'));<br />			$this->setVersion($aversion[1]);<br />			$this->setBrowser(self::BROWSER_PHOENIX);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is Firebird or not (last updated 1.7)<br />	 * @return boolean True if the browser is Firebird otherwise false<br />	 */<br />	protected function checkBrowserFirebird() {<br />		if( stripos($this->_agent,'Firebird') !== false ) {<br />			$aversion = explode('/',stristr($this->_agent,'Firebird'));<br />			$this->setVersion($aversion[1]);<br />			$this->setBrowser(self::BROWSER_FIREBIRD);<br />				return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is Netscape Navigator 9+ or not (last updated 1.7)<br />		 * NOTE: (http://browser.netscape.com/ - Official support ended on March 1st, 2008)<br />	 * @return boolean True if the browser is Netscape Navigator 9+ otherwise false<br />	 */<br />	protected function checkBrowserNetscapeNavigator9Plus() {<br />		if( stripos($this->_agent,'Firefox') !== false && preg_match('/Navigator\/([^ ]*)/i',$this->_agent,$matches) ) {<br />			$this->setVersion($matches[1]);<br />			$this->setBrowser(self::BROWSER_NETSCAPE_NAVIGATOR);<br />			return true;<br />		}<br />		else if( stripos($this->_agent,'Firefox') === false && preg_match('/Netscape6?\/([^ ]*)/i',$this->_agent,$matches) ) {<br />			$this->setVersion($matches[1]);<br />			$this->setBrowser(self::BROWSER_NETSCAPE_NAVIGATOR);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is Shiretoko or not (https://wiki.mozilla.org/Projects/shiretoko) (last updated 1.7)<br />	 * @return boolean True if the browser is Shiretoko otherwise false<br />	 */<br />	protected function checkBrowserShiretoko() {<br />		if( stripos($this->_agent,'Mozilla') !== false && preg_match('/Shiretoko\/([^ ]*)/i',$this->_agent,$matches) ) {<br />			$this->setVersion($matches[1]);<br />			$this->setBrowser(self::BROWSER_SHIRETOKO);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is Ice Cat or not (http://en.wikipedia.org/wiki/GNU_IceCat) (last updated 1.7)<br />	 * @return boolean True if the browser is Ice Cat otherwise false<br />	 */<br />	protected function checkBrowserIceCat() {<br />		if( stripos($this->_agent,'Mozilla') !== false && preg_match('/IceCat\/([^ ]*)/i',$this->_agent,$matches) ) {<br />			$this->setVersion($matches[1]);<br />			$this->setBrowser(self::BROWSER_ICECAT);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is Nokia or not (last updated 1.7)<br />	 * @return boolean True if the browser is Nokia otherwise false<br />	 */<br />	protected function checkBrowserNokia() {<br />		if( preg_match("/Nokia([^\/]+)\/([^ SP]+)/i",$this->_agent,$matches) ) {<br />			$this->setVersion($matches[2]);<br />				if( stripos($this->_agent,'Series60') !== false || strpos($this->_agent,'S60') !== false ) {<br />					$this->setBrowser(self::BROWSER_NOKIA_S60);<br />				}<br />				else {<br />					$this->setBrowser( self::BROWSER_NOKIA );<br />				}<br />			$this->setMobile(true);<br />			return true;<br />		}<br />			return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is Firefox or not (last updated 1.7)<br />	 * @return boolean True if the browser is Firefox otherwise false<br />	 */<br />	protected function checkBrowserFirefox() {<br />		if( stripos($this->_agent,'safari') === false ) {<br />				if( preg_match("/Firefox[\/ \(]([^ ;\)]+)/i",$this->_agent,$matches) ) {<br />					$this->setVersion($matches[1]);<br />					$this->setBrowser(self::BROWSER_FIREFOX);<br />					return true;<br />				}<br />				else if( preg_match("/Firefox$/i",$this->_agent,$matches) ) {<br />					$this->setVersion("");<br />					$this->setBrowser(self::BROWSER_FIREFOX);<br />					return true;<br />				}<br />			}<br />		return false;<br />	}<br /><br />		/**<br />	 * Determine if the browser is Firefox or not (last updated 1.7)<br />	 * @return boolean True if the browser is Firefox otherwise false<br />	 */<br />	protected function checkBrowserIceweasel() {<br />			if( stripos($this->_agent,'Iceweasel') !== false ) {<br />				$aresult = explode('/',stristr($this->_agent,'Iceweasel'));<br />				$aversion = explode(' ',$aresult[1]);<br />				$this->setVersion($aversion[0]);<br />				$this->setBrowser(self::BROWSER_ICEWEASEL);<br />				return true;<br />			}<br />			return false;<br />		}<br />	/**<br />	 * Determine if the browser is Mozilla or not (last updated 1.7)<br />	 * @return boolean True if the browser is Mozilla otherwise false<br />	 */<br />	protected function checkBrowserMozilla() {<br />		if( stripos($this->_agent,'mozilla') !== false  && preg_match('/rv:[0-9].[0-9][a-b]?/i',$this->_agent) && stripos($this->_agent,'netscape') === false) {<br />			$aversion = explode(' ',stristr($this->_agent,'rv:'));<br />			preg_match('/rv:[0-9].[0-9][a-b]?/i',$this->_agent,$aversion);<br />			$this->setVersion(str_replace('rv:','',$aversion[0]));<br />			$this->setBrowser(self::BROWSER_MOZILLA);<br />			return true;<br />		}<br />		else if( stripos($this->_agent,'mozilla') !== false && preg_match('/rv:[0-9]\.[0-9]/i',$this->_agent) && stripos($this->_agent,'netscape') === false ) {<br />			$aversion = explode('',stristr($this->_agent,'rv:'));<br />			$this->setVersion(str_replace('rv:','',$aversion[0]));<br />			$this->setBrowser(self::BROWSER_MOZILLA);<br />			return true;<br />		}<br />		else if( stripos($this->_agent,'mozilla') !== false  && preg_match('/mozilla\/([^ ]*)/i',$this->_agent,$matches) && stripos($this->_agent,'netscape') === false ) {<br />			$this->setVersion($matches[1]);<br />			$this->setBrowser(self::BROWSER_MOZILLA);<br />			return true;<br />		}<br />			return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is Lynx or not (last updated 1.7)<br />	 * @return boolean True if the browser is Lynx otherwise false<br />	 */<br />	protected function checkBrowserLynx() <br />	{<br />		if( stripos($this->_agent,'lynx') !== false ) {<br />			$aresult = explode('/',stristr($this->_agent,'Lynx'));<br />			$aversion = explode(' ',(isset($aresult[1])?$aresult[1]:""));<br />			$this->setVersion($aversion[0]);<br />			$this->setBrowser(self::BROWSER_LYNX);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is Amaya or not (last updated 1.7)<br />	 * @return boolean True if the browser is Amaya otherwise false<br />	 */<br />	protected function checkBrowserAmaya() <br />	{<br />		if( stripos($this->_agent,'amaya') !== false ) {<br />			$aresult = explode('/',stristr($this->_agent,'Amaya'));<br />			$aversion = explode(' ',$aresult[1]);<br />			$this->setVersion($aversion[0]);<br />			$this->setBrowser(self::BROWSER_AMAYA);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is Safari or not (last updated 1.7)<br />	 * @return boolean True if the browser is Safari otherwise false<br />	 */<br />	protected function checkBrowserSafari() <br />	{<br />		if( stripos($this->_agent,'Safari') !== false && stripos($this->_agent,'iPhone') === false && stripos($this->_agent,'iPod') === false ) {<br />			$aresult = explode('/',stristr($this->_agent,'Version'));<br />			if( isset($aresult[1]) ) {<br />				$aversion = explode(' ',$aresult[1]);<br />				$this->setVersion($aversion[0]);<br />			}<br />			else $this->setVersion(self::VERSION_UNKNOWN);<br />			$this->setBrowser(self::BROWSER_SAFARI);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is iPhone or not (last updated 1.7)<br />	 * @return boolean True if the browser is iPhone otherwise false<br />	 */<br />	protected function checkBrowseriPhone() <br />	{<br />		if( stripos($this->_agent,'iPhone') !== false ) {<br />			$aresult = explode('/',stristr($this->_agent,'Version'));<br />			if( isset($aresult[1]) ) {<br />				$aversion = explode(' ',$aresult[1]);<br />				$this->setVersion($aversion[0]);<br />			}<br />			else $this->setVersion(self::VERSION_UNKNOWN);<br />			$this->setMobile(true);<br />			$this->setBrowser(self::BROWSER_IPHONE);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is iPod or not (last updated 1.7)<br />	 * @return boolean True if the browser is iPod otherwise false<br />	 */<br />	protected function checkBrowseriPad() <br />	{<br />		if( stripos($this->_agent,'iPad') !== false ) {<br />			$aresult = explode('/',stristr($this->_agent,'Version'));<br />			if( isset($aresult[1]) ) {<br />				$aversion = explode(' ',$aresult[1]);<br />				$this->setVersion($aversion[0]);<br />			}<br />			else $this->setVersion(self::VERSION_UNKNOWN);<br />			$this->setMobile(true);<br />			$this->setBrowser(self::BROWSER_IPAD);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is iPod or not (last updated 1.7)<br />	 * @return boolean True if the browser is iPod otherwise false<br />	 */<br />	protected function checkBrowseriPod() <br />	{<br />		if( stripos($this->_agent,'iPod') !== false ) {<br />			$aresult = explode('/',stristr($this->_agent,'Version'));<br />			if( isset($aresult[1]) ) {<br />				$aversion = explode(' ',$aresult[1]);<br />				$this->setVersion($aversion[0]);<br />			}<br />			else $this->setVersion(self::VERSION_UNKNOWN);<br />			$this->setMobile(true);<br />			$this->setBrowser(self::BROWSER_IPOD);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine if the browser is Android or not (last updated 1.7)<br />	 * @return boolean True if the browser is Android otherwise false<br />	 */<br />	protected function checkBrowserAndroid() <br />	{<br />		if( stripos($this->_agent,'Android') !== false ) {<br />			$aresult = explode(' ',stristr($this->_agent,'Android'));<br />			if( isset($aresult[1]) ) {<br />				$aversion = explode(' ',$aresult[1]);<br />				$this->setVersion($aversion[0]);<br />			}<br />			else $this->setVersion(self::VERSION_UNKNOWN);<br />			$this->setMobile(true);<br />			$this->setBrowser(self::BROWSER_ANDROID);<br />			return true;<br />		}<br />		return false;<br />	}<br /><br />	/**<br />	 * Determine the user's platform (last updated 1.7)<br />	 */<br />	protected function checkPlatform() <br />	{<br />		if( stripos($this->_agent, 'windows') !== false ) $this->_platform = self::PLATFORM_WINDOWS;<br />		else if( stripos($this->_agent, 'iPad') !== false ) $this->_platform = self::PLATFORM_IPAD;<br />		else if( stripos($this->_agent, 'iPod') !== false ) $this->_platform = self::PLATFORM_IPOD;<br />		else if( stripos($this->_agent, 'iPhone') !== false ) $this->_platform = self::PLATFORM_IPHONE;<br />		elseif( stripos($this->_agent, 'mac') !== false ) $this->_platform = self::PLATFORM_APPLE;<br />		elseif( stripos($this->_agent, 'android') !== false ) $this->_platform = self::PLATFORM_ANDROID;<br />		elseif( stripos($this->_agent, 'linux') !== false ) $this->_platform = self::PLATFORM_LINUX;<br />		else if( stripos($this->_agent, 'Nokia') !== false ) $this->_platform = self::PLATFORM_NOKIA;<br />		else if( stripos($this->_agent, 'BlackBerry') !== false ) $this->_platform = self::PLATFORM_BLACKBERRY;<br />		elseif( stripos($this->_agent,'FreeBSD') !== false ) $this->_platform = self::PLATFORM_FREEBSD;<br />		elseif( stripos($this->_agent,'OpenBSD') !== false ) $this->_platform = self::PLATFORM_OPENBSD;<br />		elseif( stripos($this->_agent,'NetBSD') !== false ) $this->_platform = self::PLATFORM_NETBSD;<br />		elseif( stripos($this->_agent, 'OpenSolaris') !== false ) $this->_platform = self::PLATFORM_OPENSOLARIS;<br />		elseif( stripos($this->_agent, 'SunOS') !== false ) $this->_platform = self::PLATFORM_SUNOS;<br />		elseif( stripos($this->_agent, 'OS\/2') !== false ) $this->_platform = self::PLATFORM_OS2;<br />		elseif( stripos($this->_agent, 'BeOS') !== false ) $this->_platform = self::PLATFORM_BEOS;<br />		elseif( stripos($this->_agent, 'win') !== false ) $this->_platform = self::PLATFORM_WINDOWS;<br />	}<br /><p>}
Copy after login

这个类的使用方法也很简单,如下:

<p>$obj_browser = new Browser; //创建一个此类的一个实例</p>$obj_browser->getBrowser(); //调用相关函数,获取浏览器名称<br />$obj_browser->getPlatform(); //调用相关函数,获取系统名称<br /><p>$obj_browser->isMobile(); //判断来访者所用设备是iPhone、iPad或者电脑(PC) </p>
Copy after login

ok,至此通过 php 判断浏览器类型的方法已经总结完了,三种办法,但如果要求精度不是那么高的话,第一种完全可以了,第二种,第三种办法实在有点太过精细了而且靠谱度未能确定复杂度却显而易见。


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1673
14
PHP Tutorial
1278
29
C# Tutorial
1257
24
What are the differences between Huawei GT3 Pro and GT4? What are the differences between Huawei GT3 Pro and GT4? Dec 29, 2023 pm 02:27 PM

Many users will choose the Huawei brand when choosing smart watches. Among them, Huawei GT3pro and GT4 are very popular choices. Many users are curious about the difference between Huawei GT3pro and GT4. Let’s introduce the two to you. . What are the differences between Huawei GT3pro and GT4? 1. Appearance GT4: 46mm and 41mm, the material is glass mirror + stainless steel body + high-resolution fiber back shell. GT3pro: 46.6mm and 42.9mm, the material is sapphire glass + titanium body/ceramic body + ceramic back shell 2. Healthy GT4: Using the latest Huawei Truseen5.5+ algorithm, the results will be more accurate. GT3pro: Added ECG electrocardiogram and blood vessel and safety

Detailed explanation of the usage of return in C language Detailed explanation of the usage of return in C language Oct 07, 2023 am 10:58 AM

The usage of return in C language is: 1. For functions whose return value type is void, you can use the return statement to end the execution of the function early; 2. For functions whose return value type is not void, the function of the return statement is to end the execution of the function. The result is returned to the caller; 3. End the execution of the function early. Inside the function, we can use the return statement to end the execution of the function early, even if the function does not return a value.

Fix: Snipping tool not working in Windows 11 Fix: Snipping tool not working in Windows 11 Aug 24, 2023 am 09:48 AM

Why Snipping Tool Not Working on Windows 11 Understanding the root cause of the problem can help find the right solution. Here are the top reasons why the Snipping Tool might not be working properly: Focus Assistant is On: This prevents the Snipping Tool from opening. Corrupted application: If the snipping tool crashes on launch, it might be corrupted. Outdated graphics drivers: Incompatible drivers may interfere with the snipping tool. Interference from other applications: Other running applications may conflict with the Snipping Tool. Certificate has expired: An error during the upgrade process may cause this issu simple solution. These are suitable for most users and do not require any special technical knowledge. 1. Update Windows and Microsoft Store apps

What is the execution order of return and finally statements in Java? What is the execution order of return and finally statements in Java? Apr 25, 2023 pm 07:55 PM

Source code: publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}#Output The output of the above code can simply conclude: return is executed before finally. Let's take a look at what happens at the bytecode level. The following intercepts part of the bytecode of the case1 method, and compares the source code to annotate the meaning of each instruction in

How to Fix Can't Connect to App Store Error on iPhone How to Fix Can't Connect to App Store Error on iPhone Jul 29, 2023 am 08:22 AM

Part 1: Initial Troubleshooting Steps Checking Apple’s System Status: Before delving into complex solutions, let’s start with the basics. The problem may not lie with your device; Apple's servers may be down. Visit Apple's System Status page to see if the AppStore is working properly. If there's a problem, all you can do is wait for Apple to fix it. Check your internet connection: Make sure you have a stable internet connection as the "Unable to connect to AppStore" issue can sometimes be attributed to a poor connection. Try switching between Wi-Fi and mobile data or resetting network settings (General > Reset > Reset Network Settings > Settings). Update your iOS version:

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Let's talk about why Vue2 can access properties in various options through this Let's talk about why Vue2 can access properties in various options through this Dec 08, 2022 pm 08:22 PM

This article will help you interpret the vue source code and introduce why you can use this to access properties in various options in Vue2. I hope it will be helpful to everyone!

0.0.0.0 Day exploit reveals 18-year-old security flaw in Chrome, Safari, and Firefox 0.0.0.0 Day exploit reveals 18-year-old security flaw in Chrome, Safari, and Firefox Aug 09, 2024 pm 12:42 PM

An 18-year-old vulnerability, known as the "0.0.0.0 Day" flaw, has been disclosed to allow malicious websites to bypass security protocols in major web browsers, including Google Chrome, Mozilla Firefox, and Apple Safari. The flaw primarily

See all articles