現代專案**強烈不建議**依賴 User-Agent 判斷 IE,應改用**功能偵測**或**條件註解**(僅 IE 支援)。若確需在伺服器端識別 IE(如統計、相容性導向),可參考下方函式,但請了解 UA 易偽造且 Edge/Chrome 可模擬。
<?php
function is_ie_browser(): bool
{
$ua = $_SERVER['HTTP_USER_AGENT'] ?? '';
// IE 10 及以下:含 MSIE 關鍵字
// IE 11:含 Trident/7.0; rv:11.0
// Edge (舊版 EdgeHTML):含 Edge/
// 這裡僅判斷傳統 IE (MSIE 或 Trident/rv:11)
return (bool) preg_match('/MSIE|Trident\/.*rv:11/i', $ua);
}
// 使用
if (is_ie_browser()) {
echo '偵測到 IE,建議升級瀏覽器';
}
| 瀏覽器 | User-Agent 片段 | 是否判定為 IE |
|---|---|---|
| IE 8 | MSIE 8.0 | 是 |
| IE 10 | MSIE 10.0 | 是 |
| IE 11 | Trident/7.0; rv:11.0 | 是 |
| Edge (Legacy) | Edge/18.19041 | 否(含 Edge 關鍵字) |
| Edge (Chromium) | Edg/119.0 | 否 |
| Chrome | Chrome/119.0 | 否 |
// JavaScript
if (!('fetch' in window)) {
// 載入 polyfill 或導向舊版頁面
}
@supports (display: grid) {
.layout { display: grid; }
}
<!--[if IE]>
<link rel="stylesheet" href="ie-fix.css">
<![endif]-->
若僅為記錄統計,建議直接儲存完整 UA 字串,離線分析時再用成熟解析庫(如 ua-parser、WhichBrowser)解析,避免自寫正則遺漏。
本文提供的 is_ie_browser() 可滿足簡單判斷需求,**生產環境請優先採用功能偵測**,僅在無法前端處理的極少數情境(如舊系統強制導向升級頁)才使用伺服器端 UA 判斷。