首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 解析 User-Agent 取得瀏覽器名稱與版本號

     編輯:PHP 相關知識

核心思路

透過分析 $_SERVER['HTTP_USER_AGENT'] 字串,使用關鍵字比對與字串切割提取瀏覽器名稱與版本。本函數支援識別 IE、Firefox (Netscape)、Opera、Chrome、Safari 等主流瀏覽器,並回傳格式化字串如 Internet Explorer 11.0。

完整函數程式碼

<?php
function get_browser_info() {
    $agent = $_SERVER['HTTP_USER_AGENT'];
    $browser = '';
    $version = '';

    // 1. 明確關鍵字優先判斷
    if (stripos($agent, 'Edge/') !== false) {
        $browser = 'Microsoft Edge';
        preg_match('/Edge\/([\d.]+)/', $agent, $m);
        $version = $m[1] ?? '';
    } elseif (stripos($agent, 'Chrome/') !== false && stripos($agent, 'Edg/') === false) {
        $browser = 'Google Chrome';
        preg_match('/Chrome\/([\d.]+)/', $agent, $m);
        $version = $m[1] ?? '';
    } elseif (stripos($agent, 'Firefox/') !== false) {
        $browser = 'Mozilla Firefox';
        preg_match('/Firefox\/([\d.]+)/', $agent, $m);
        $version = $m[1] ?? '';
    } elseif (stripos($agent, 'MSIE') !== false || stripos($agent, 'Trident/') !== false) {
        $browser = 'Internet Explorer';
        if (preg_match('/MSIE ([\d.]+)/', $agent, $m)) {
            $version = $m[1];
        } elseif (preg_match('/rv:([\d.]+)/', $agent, $m)) { // IE11
            $version = $m[1];
        }
    } elseif (stripos($agent, 'Opera/') !== false || stripos($agent, 'OPR/') !== false) {
        $browser = 'Opera';
        preg_match('/(?:Opera|OPR)\/([\d.]+)/', $agent, $m);
        $version = $m[1] ?? '';
    } elseif (stripos($agent, 'Safari/') !== false && stripos($agent, 'Chrome/') === false) {
        $browser = 'Apple Safari';
        preg_match('/Version\/([\d.]+)/', $agent, $m);
        $version = $m[1] ?? '';
    } else {
        // 其它瀏覽器嘗試通用解析
        if (preg_match('/([a-zA-Z]+)\/([\d.]+)/', $agent, $m)) {
            $browser = $m[1];
            $version = $m[2];
        }
    }

    return $browser . ($version ? ' ' . $version : '');
}

// 使用範例
echo get_browser_info();
// 可能輸出:Google Chrome 119.0.6045.105
?>

改良說明

  • 原始碼使用已棄用的 ereg、split 等函數,已全面改用 preg_match、stripos。
  • 新增 Edge、Chrome、Firefox、Safari 現代瀏覽器識別邏輯。
  • 版本號提取改用正則捕獲群組,更精準穩健。
  • 回傳空字串而非 false,方便前端直接輸出。

進階建議

生產環境建議使用成熟函式庫如 UserAgentParser 或 PHP 內建 get_browser()(需 browscap.ini),可獲得裝置類型、作業系統、引擎版本等豐富資訊。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved