有没有一种方法可以使用PHP来检测页面是否在IE6中加载?
有没有一种方法可以使用PHP来检测页面是否在IE6中加载?
尝试检查他们的用户代理是否为'MSIE 6.'
。
$using_ie6 = (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.') !== FALSE);
这是基于此用户代理信息的。
if
条件中添加 && !strpos($_SERVER['HTTP_USER_AGENT'], 'Opera')
即可。 - Tom你可以通过以下HTML代码检测IE6
<!--[if IE 6]>
// ie6 only stuff here
<![endif]-->
这里有一个关于如何在PHP中实现的链接Way Back Machine,但是我在解析$_SERVER["HTTP_USER_AGENT"]
以检测IE6时看到了许多误报。
这个页面上基于用户代理的许多答案并不太可靠,因为Opera经常使用包含"MSIE 6.0"的用户代理字符串来标识自己,例如:
Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 9.51
这影响 Opera 5 到 9 的所有版本,甚至还包括 Opera 10,并且可以在 Opera 中打开或关闭。请参见此页面。
我经常看到的一种常见方法是测试是否为“MSIE”,并排除“Opera”。例如:
if (preg_match('/\bmsie 6/i', $ua) && !preg_match('/\bopera/i', $ua))
echo "We have IE6!";
嗯,PHLAK...
我认为这个更好 :P
if(preg_match('/msie [2-6]/i',$_SERVER['HTTP_USER_AGENT'])) {
// if IE<=6
} else {
//if IE>6
}
'/msie [1-6]/i'
更短,对大多数人来说可能更为熟悉。 - Gras Double//if IE>6
的注释是误导性的。任何其他浏览器都将匹配失败。 - designosis就像其他人所说,仅通过检查用户代理可能会有误报...因此为什么不同时使用用户代理检查和条件注释呢。
例如...
<? if (preg_match('/\bmsie 6/i', $_SERVER['HTTP_USER_AGENT']) { ?>
<!--[if IE 6]>
// ie6 only stuff here
<![endif]-->
<? } ?>
您可以在许多浏览器中使用它,但这需要耗费时间,并且有时会出现误报...
function do_stylesheet_link() {
// Picks up appropriate css file depending on the user-agent
// if ( stristr($_SERVER['HTTP_USER_AGENT'], 'Firefox') ) {
//echo '<link rel="stylesheet" href="css/firefox.css" type="text/css" />'; }
//elseif ( stristr($_SERVER['HTTP_USER_AGENT'], 'Chrome') ) {
//echo '<link rel="stylesheet" href="css/chrome.css" type="text/css" />'; }
//elseif ( stristr($_SERVER['HTTP_USER_AGENT'], 'Safari') ) {
//echo '<link rel="stylesheet" href="css/safari.css" type="text/css" />'; }
//elseif ( stristr($_SERVER['HTTP_USER_AGENT'], 'Opera') ) {
//echo '<link rel="stylesheet" href="css/opera.css" type="text/css" />'; }
if ( stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.') ) {
echo '<link rel="stylesheet" href="css/ie6.css" type="text/css" />'; }
elseif ( stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE 7.') ) {
echo '<link rel="stylesheet" href="css/ie7.css" type="text/css" />'; }
elseif ( stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE 8.') ) {
echo '<link rel="stylesheet" href="css/ie8.css" type="text/css" />'; }
else {
echo '<link rel="stylesheet" href="css/style.css" type="text/css" />';
}
}
if(substr($_SERVER['HTTP_USER_AGENT'],0,34)=="Mozilla/4.0 (compatible; MSIE 6.0;")
echo "我是愚蠢的IE6";
IE6用户代理总是以"Mozilla/4.0 (compatible; MSIE 6.0;"开头,而IE7、8则在中间含有"MSIE 6"。
列出的方法通常会标记带有某些插件(例如MathPlayer以及一些恶意工具栏)的浏览器。
我发现一个更可靠的方法是:
if( preg_match('/^Mozilla\/4\.0 \(compatible; MSIE 6/', $_SERVER['HTTP_USER_AGENT']) != 0 )