Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php:查找Chrome和Safari浏览器_Php_User Agent - Fatal编程技术网

Php:查找Chrome和Safari浏览器

Php:查找Chrome和Safari浏览器,php,user-agent,Php,User Agent,我使用下面的代码查找用户代理, $user_agent = $_SERVER['HTTP_USER_AGENT']; if (preg_match('/MSIE/i', $user_agent)) { echo "Internet Explorer"; } if (preg_match('/Firefox/i', $user_agent)) { echo "FireFox"; } if (strpos( $user

我使用下面的代码查找用户代理,
    $user_agent = $_SERVER['HTTP_USER_AGENT']; 
    if (preg_match('/MSIE/i', $user_agent)) { 
       echo "Internet Explorer";
    }
    if (preg_match('/Firefox/i', $user_agent)) { 
       echo "FireFox";
    }
    if (strpos( $user_agent, 'Chrome') !== false)
    {
        echo "Google Chrome";
    }
    if (strpos( $user_agent, 'Safari') !== false)
    {
       echo "Safari";
    }
    if (preg_match('/Opera/i', $user_agent)) { 
       echo "Opera";
    }

    ?>
但是我的chrome浏览器突然回到了useragent下面

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.155 Safari/537.22

它包含单词safari和chrome。因此两个浏览器名称都被打印出来。解决方案是什么。谢谢。

chrome的用户代理包含
safari
,但是safari的用户代理不包含
chrome
,所以如果。。。elseif:

if (stripos( $user_agent, 'Chrome') !== false)
{
    echo "Google Chrome";
}

elseif (stripos( $user_agent, 'Safari') !== false)
{
   echo "Safari";
}
注意:使用
stripos
而不是
strpos
来解释案例变化。

尝试以下方法:

$browser = get_browser(null, true);
print_r($browser);
From doc:通过在browscap.ini文件中查找浏览器信息,尝试确定用户浏览器的功能。


ref:

解决方案几乎总是“停止关心浏览器是什么”,我猜这与两种浏览器都使用
WebKit
布局引擎有关。您应该研究特征检测,因为浏览器检测不可靠。你应该考虑创建所有浏览器可以使用的基本功能的地方,并为支持附加功能的浏览器(即特征检测)扩展该功能。在“昆廷评论”后面,请始终问自己为什么服务器需要知道浏览器是什么。我理解在客户端使用功能检测,但我不明白为什么您需要在服务器上了解这一点。@ColinMorelli这里有一个想法。。。如果您想动态地包含您只想在某些浏览器上执行的javascript(针对初学者的特性检测),该怎么办?因此,如果您不需要它,您可以节省一次往返(我的意思是,大多数lib都允许您动态加载js,但shhhh)@jcolebrand,因为它是微软的努夫说难道你就不能。。。反转测试?;-)想想看,他不能反转测试,因为两者都包含“Safari”。。。所以第一次测试只通过了铬。。。两者都有野生动物园。。所以第二次检查正确通过了。。。如果第二个是第一个,那么两个浏览器都会将第一个语句传递为true。这将为Android浏览器提供假阳性Safari