在PHP开发中,获取用户浏览器信息是实现页面兼容性适配、访问数据统计等功能的常见需求,核心是通过读取请求头中的USER_AGENT字段,结合正则匹配规则识别浏览器类型和版本。

一、获取USER_AGENT请求头
PHP中可以通过超全局变量$_SERVER直接获取USER_AGENT信息,这个字段包含了客户端浏览器、操作系统等相关信息,示例代码如下:
<?php // 获取USER_AGENT信息,若不存在则赋值为空字符串 $userAgent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; echo $userAgent; ?>
不同浏览器的USER_AGENT格式存在差异,比如Chrome浏览器的USER_AGENT通常包含Chrome关键字,Firefox包含Firefox关键字,这是后续识别的核心依据。
二、识别浏览器类型
我们可以通过正则匹配USER_AGENT中的关键字来判断浏览器类型,常见浏览器的识别规则如下:
- Chrome:匹配关键字Chrome,同时排除Edge浏览器(Edge的USER_AGENT也包含Chrome关键字)
- Firefox:匹配关键字Firefox
- Edge:匹配关键字Edg/
- Safari:匹配关键字Safari,同时排除Chrome和Edge
- IE:匹配关键字MSIE或者Trident
下面是识别浏览器类型的函数示例:
<?php
function getBrowserType($userAgent) {
if (empty($userAgent)) {
return '未知浏览器';
}
// 先判断Edge,避免被Chrome规则匹配
if (preg_match('/Edg\//i', $userAgent)) {
return 'Edge';
}
// 判断Chrome
if (preg_match('/Chrome\//i', $userAgent)) {
return 'Chrome';
}
// 判断Firefox
if (preg_match('/Firefox\//i', $userAgent)) {
return 'Firefox';
}
// 判断Safari,排除包含Chrome的情况
if (preg_match('/Safari\//i', $userAgent) && !preg_match('/Chrome\//i', $userAgent)) {
return 'Safari';
}
// 判断IE
if (preg_match('/MSIE/i', $userAgent) || preg_match('/Trident/i', $userAgent)) {
return 'IE';
}
return '其他浏览器';
}
?>三、获取浏览器版本
识别到浏览器类型后,可以针对不同类型的浏览器提取对应的版本号,版本号通常跟在浏览器关键字后面,用斜杠分隔:
<?php
function getBrowserVersion($userAgent, $browserType) {
if (empty($userAgent) || $browserType == '未知浏览器' || $browserType == '其他浏览器') {
return '未知版本';
}
$pattern = '';
switch ($browserType) {
case 'Chrome':
$pattern = '/Chrome\/([\d.]+)/i';
break;
case 'Firefox':
$pattern = '/Firefox\/([\d.]+)/i';
break;
case 'Edge':
$pattern = '/Edg\/([\d.]+)/i';
break;
case 'Safari':
$pattern = '/Version\/([\d.]+)/i';
break;
case 'IE':
// IE11及以上用Trident标识,版本号在rv后面
if (preg_match('/Trident/i', $userAgent)) {
$pattern = '/rv:([\d.]+)/i';
} else {
$pattern = '/MSIE ([\d.]+)/i';
}
break;
}
if (preg_match($pattern, $userAgent, $matches)) {
return $matches[1];
}
return '未知版本';
}
?>四、完整使用示例
将两个函数结合,就可以完整获取用户的浏览器类型和版本:
<?php $userAgent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; $browserType = getBrowserType($userAgent); $browserVersion = getBrowserVersion($userAgent, $browserType); echo '浏览器类型:' . $browserType . '<br/>'; echo '浏览器版本:' . $browserVersion; ?>
注意事项
USER_AGENT信息是可以被客户端修改的,因此这种方式获取的浏览器信息不是绝对可靠的,如果需要高精度的浏览器识别,可以结合前端JS检测的方式共同验证。另外,随着浏览器版本的更新,USER_AGENT格式可能会发生变化,正则规则也需要定期维护更新,确保识别的准确性。
PHP浏览器信息识别HTTP_USER_AGENT浏览器类型判断版本获取修改时间:2026-06-03 23:44:14