You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP中检测iPhone端Safari浏览器?

如何检测iPhone端的Safari浏览器

你的代码问题出在正则匹配的顺序上:iPhone端Safari的User-Agent字符串同时包含safari和mobile关键词,而你的循环是按顺序匹配,最后匹配到mobile时会覆盖之前识别出的Safari,导致最终返回Mobile browser。

另外需要注意:iOS平台上的Chrome浏览器的UA也会包含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',
        '/chrome/i' => 'Chrome',
        '/edge/i' => 'Edge',
        '/opera/i' => 'Opera',
        // 优先检测iPhone/iPad/iPod上的Safari,排除Chrome干扰
        '/(iPhone|iPad|iPod).*safari/i' => 'iPhone/iPad Safari',
        '/safari/i' => 'Safari',
        '/mobile/i' => 'Mobile browser',
    ];

    foreach ($browsers as $regex => $value) {
        if (preg_match($regex, $user_agent)) {
            $browser = $value;
            // 匹配到即跳出循环,避免被后续规则覆盖
            break;
        }
    }

    return $browser;
}
$agent = getBrowser();
echo $agent;
?>

关键修改点:

  • 调整正则顺序:把移动端Safari的检测放在通用Safari之前,精准匹配iOS设备上的Safari
  • 匹配后立即break循环:防止后续的正则规则覆盖当前识别结果
  • 区分iOS Chrome与Safari:避免把iOS Chrome误判为Safari

内容的提问来源于stack exchange,提问作者Hary Hillary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 09:45:41