<?php
// 获取用户代理字符串
$userAgent = $_SERVER['HTTP_USER_AGENT'];
// 尝试解析浏览器信息
if (preg_match('/MSIE (.*?);|Trident\/.*rv:([0-9].*?);|Edge\/([0-9]*\.)/i', $userAgent, $matches)) {
$browser = (isset($matches[1]) && $matches[1] ? $matches[1] : (isset($matches[2]) ? $matches[2] : $matches[3]));
} elseif (preg_match('/Firefox\/([0-9.]*)/i', $userAgent, $matches)) {
$browser = $matches[1];
} elseif (preg_match('/Chrome\/([0-9.]*)/i', $userAgent, $matches)) {
$browser = $matches[1];
} elseif (preg_match('/Safari\/([0-9.]*)/i', $userAgent, $matches)) {
$browser = $matches[1];
} else {
$browser = 'Unknown';
}
// 尝试解析操作系统信息
if (preg_match('/Windows NT ([0-9.]+)/i', $userAgent, $matches)) {
$os = 'Windows ' . $matches[1];
} elseif (preg_match('/Mac OS X ([0-9_]+)/i', $userAgent, $matches)) {
$os = 'Mac OS X ' . str_replace('_', '.', $matches[1]);
} elseif (preg_match('/Linux/i', $userAgent)) {
$os = 'Linux';
} elseif (preg_match('/Android\s+([\d.]+)/i', $userAgent, $matches)) {
$os = 'Android ' . $matches[1];
} elseif (preg_match('/iOS\s+([\d_]+)/i', $userAgent, $matches)) {
$os = 'iOS ' . str_replace('_', '.', $matches[1]);
} else {
$os = 'Unknown';
}
echo "Browser: " . $browser . "\n";
echo "OS: " . $os;
?>
这段代码首先通过`$_SERVER['HTTP_USER_AGENT']`获取用户的浏览器代理字符串。然后,使用正则表达式来解析并获取浏览器和操作系统的信息。最后,输出解析得到的浏览器和操作系统信息。需要注意的是,由于用户代理字符串可以被修改或伪造,因此获取到的信息可能并不完全准确。