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