如何检测Safari (Iphone)浏览器在php?



我正在尝试使用w3docs中描述的方法检测Safari浏览器。

我试过了,

<?php
ob_start();
session_start();
function getBrowser()
{
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$browser = "N/A";
$browsers = [
'/msie/i' => 'Internet explorer',
'/firefox/i' => 'Firefox',
'/safari/i' => 'Safari',
'/chrome/i' => 'Chrome',
'/edge/i' => 'Edge',
'/opera/i' => 'Opera',
'/mobile/i' => 'Mobile browser',
];
foreach ($browsers as $regex => $value) {
if (preg_match($regex, $user_agent)) {
$browser = $value;
}
}
return $browser;
}
$agent = getBrowser();
echo $agent;
?>

它返回chrome的chrome,移动浏览器的移动浏览器,但不为safari。没有办法检测Safari (Iphone)浏览器吗?

欢迎任何人分享任何关于这方面的知识/帮助。

您需要缩短您的循环,以便它一找到匹配的值就退出:

foreach ($browsers as $regex => $value) {
if (preg_match($regex, $user_agent)) {
return $value;
}
}

如果没有找到,你可能需要一个默认值:

foreach ($browsers as $regex => $value) {
if (preg_match($regex, $user_agent)) {
return $value;
}
}
return 'unknown';

否则,您将遍历整个列表,并且(可能)总是匹配最后一个"mobile"因为它也可能出现在字符串中

最新更新