2

我在互联网的帮助下创建了一个脚本来检测 Windows 的操作系统版本,但现在我一直在检测 Mac OS 版本。我没有 Mac OS 来测试代码并找出使用什么,搜索 Google 并没有真正帮助我。这些是我在 Wiki 上找到的版本:LINK

例如,对于 Windows,我发现:windows nt 6.1 = Windows 7。

if (preg_match('/windows nt 6.1/i', $user_agent)) {

            $platform .= ' 7';

        }

如何检测Mac的数字版本?这是我唯一拥有的部分,但并非对所有版本都准确:

if (preg_match('/macintosh|mac os x/i', $user_agent)) {

    $platform = 'Mac';

} 
    if (preg_match('/mac_powerpc/i', $user_agent)) {

        $platform .= ' OS 9';

    } elseif (preg_match('/macintosh/i', $user_agent)) {

        $platform .= ' OS X';

    }
4

1 回答 1

4

如果您想要精确的结果并且今天仍然回家,请切换到 UAparser 库: https ://github.com/ua-parser/uap-php

从他们的手册中:

require_once 'vendor/autoload.php';
use UAParser\Parser;

$ua = "Mozilla/5.0 (Macintosh; Intel Ma...";

$parser = Parser::create();
$result = $parser->parse($ua);

print $result->ua->family;            // Safari
print $result->ua->major;             // 6
print $result->ua->minor;             // 0
print $result->ua->patch;             // 2
print $result->ua->toString();        // Safari 6.0.2
print $result->ua->toVersion();       // 6.0.2

print $result->os->family;            // Mac OS X
print $result->os->major;             // 10
print $result->os->minor;             // 7
print $result->os->patch;             // 5
print $result->os->patchMinor;        // [null]
print $result->os->toString();        // Mac OS X 10.7.5
print $result->os->toVersion();       // 10.7.5

print $result->device->family;        // Other

print $result->toString();            // Safari 6.0.2/Mac OS X 10.7.5
print $result->originalUserAgent;     // Mozilla/5.0 (Macintosh; Intel Ma...

如果您使用composer ,请使用包:

"require": { 
    "ua-parser/uap-php": "dev-master"
}
于 2013-05-20T16:43:46.227 回答