我想在 PHP 中按照以下方式对不同版本的Internet Explorer进行条件判断:
if($browser == ie6){ //执行这个代码} elseif($browser == ie7) { //执行这个代码 } elseif...
我已经看到过许多类似代码的变体,但是我正在寻找一些非常简单易懂的代码来执行一些简单的 if 和 else,从而执行不同的操作。
谢谢
编辑:我需要展示一些不同的消息给用户,因此 CSS 的条件语句等都不太适用。
我想在 PHP 中按照以下方式对不同版本的Internet Explorer进行条件判断:
if($browser == ie6){ //执行这个代码} elseif($browser == ie7) { //执行这个代码 } elseif...
我已经看到过许多类似代码的变体,但是我正在寻找一些非常简单易懂的代码来执行一些简单的 if 和 else,从而执行不同的操作。
谢谢
编辑:我需要展示一些不同的消息给用户,因此 CSS 的条件语句等都不太适用。
这是我最终所使用的变体,它检查IE8及以下版本:
if (preg_match('/MSIE\s(?P<v>\d+)/i', @$_SERVER['HTTP_USER_AGENT'], $B) && $B['v'] <= 8) {
// Browsers IE 8 and below
} else {
// All other browsers
}
'/(?i)msie [1-8]\./'
- michaellindahl一个能够在IE10和IE11上继续使用的版本:
preg_match('/MSIE (.*?);/', $_SERVER['HTTP_USER_AGENT'], $matches);
if(count($matches)<2){
preg_match('/Trident\/\d{1,2}.\d{1,2}; rv:([0-9]*)/', $_SERVER['HTTP_USER_AGENT'], $matches);
}
if (count($matches)>1){
//Then we're using IE
$version = $matches[1];
switch(true){
case ($version<=8):
//IE 8 or under!
break;
case ($version==9 || $version==10):
//IE9 & IE10!
break;
case ($version==11):
//Version 11!
break;
default:
//You get the idea
}
}
Trident\/\d{1,2}.\d{1,2};(.*)rv:([0-9]*)
,并且$version = $matches[1];
应该改为 $version = ($matches[2] == 11)?$matches[2]:$matches[1];
。您可以在这里查看正则表达式的示例:regexr.com/3fb4k。 - jdgregson这是一个很好的用于在PHP中检测浏览器的资源:http://php.net/manual/zh/function.get-browser.php
这是其中看起来最简单的示例之一:
<?php
function get_user_browser()
{
$u_agent = $_SERVER['HTTP_USER_AGENT'];
$ub = '';
if(preg_match('/MSIE/i',$u_agent))
{
$ub = "ie";
}
elseif(preg_match('/Firefox/i',$u_agent))
{
$ub = "firefox";
}
elseif(preg_match('/Safari/i',$u_agent))
{
$ub = "safari";
}
elseif(preg_match('/Chrome/i',$u_agent))
{
$ub = "chrome";
}
elseif(preg_match('/Flock/i',$u_agent))
{
$ub = "flock";
}
elseif(preg_match('/Opera/i',$u_agent))
{
$ub = "opera";
}
return $ub;
}
?>
随后在你的代码中,你可以这样说:
$browser = get_user_browser();
if($browser == "ie"){
//do stuff
}
if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) { ... }
对于特定版本,您可以扩展条件。
if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.') !== false) { ... }
还可以看看这个相关的问题。
preg_match('/Trident\/7.0; rv:11.0/', $_SERVER['HTTP_USER_AGENT'])
- Andres SK我这样做
$u = $_SERVER['HTTP_USER_AGENT'];
$isIE7 = (bool)preg_match('/msie 7./i', $u );
$isIE8 = (bool)preg_match('/msie 8./i', $u );
$isIE9 = (bool)preg_match('/msie 9./i', $u );
$isIE10 = (bool)preg_match('/msie 10./i', $u );
if ($isIE9) {
//do ie9 stuff
}
PHP有一个名为get_browser()的函数,它将返回一个对象(或数组,如果您选择的话),其中包含有关用户浏览器及其功能的详细信息。
简单查看后,我得到了以下代码:
$browser = get_browser( null, true );
if( $browser['name'] == "Firefox" )
if( $browser['majorversion'] == 4 )
echo "You're using Firefox version 4!";
这不是一种百分之百可靠的方法(因为它从 HTTP_USER_AGENT 读取,该信息可以被伪造,并且有时会被php错误地分析),但据我所知,这是最简单的方法。
if (isset($_SERVER['HTTP_USER_AGENT']) && preg_match("/(?i)msie|trident|edge/",$_SERVER['HTTP_USER_AGENT'])) {
// eh, IE found
}
这里是我编写的一个小 PHP 函数,它直接使用了 MSFT 建议的 JavaScript 探测代码中的正则表达式。相关文章链接为:http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx
/**
* Returns the version of Internet Explorer or false
*/
function isIE(){
$isIE = preg_match("/MSIE ([0-9]{1,}[\.0-9]{0,})/",$_SERVER['HTTP_USER_AGENT'],$version);
if($isIE){
return $version[1];
}
return $isIE;
}
您也可以查看PHP的get_browser();
函数 http://php.net/manual/en/function.get-browser.php
也许您会发现它对于更多功能很有用。
仅检测 MSIE 并不能足以检测 IE。您还需要检测“Trident”,该项仅在 IE11 中使用。因此,以下是我的解决方案,适用于版本 8 到 11。
$agent=strtoupper($_SERVER['HTTP_USER_AGENT']);
$isIE=(strpos($agent,'MSIE')!==false || strpos($agent,'TRIDENT')!==false);