我们如何区分这个Windows版本2008 / XP / 7/2003与PHP

正如我们所知道的,通过简单的php代码很容易检测访客操作系统和版本

function getOS($userAgent) { // Create list of operating systems with operating system name as array key $oses = array ( 'iPhone' => '(iPhone)', 'iPad' => 'iPad', 'Android' => 'Android', 'Windows 3.11' => 'Win16', 'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)', // Use regular expressions as value to identify operating system 'Windows 98' => '(Windows 98)|(Win98)', 'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)', 'Windows XP' => '(Windows NT 5.1)|(Windows XP)', 'Windows Server 2003' => '(Windows NT 5.2)', 'Windows Vista' => '(Windows NT 6.0)|(Windows Vista)', 'Windows 7' => '(Windows NT 6.1)|(Windows 7)', 'Windows NT 4.0' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)', 'Windows ME' => 'Windows ME', 'Open BSD'=>'OpenBSD', 'Sun OS'=>'SunOS', 'Linux'=>'(Linux)|(X11)', 'Safari' => '(Safari)', 'Macintosh'=>'(Mac_PowerPC)|(Macintosh)', 'QNX'=>'QNX', 'BeOS'=>'BeOS', 'OS/2'=>'OS/2', 'Search Bot'=>'(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp/cat)|(msnbot)|(ia_archiver)' ); foreach($oses as $os=>$pattern){ // Loop through $oses array // Use regular expressions to check operating system type if(eregi($pattern, $userAgent)) { // Check if a value in $oses array matches current user agent. return $os; // Operating system was matched so return $oses key } } return 'Unknown'; // Cannot find operating system so return Unknown } 

但是有一个问题,一些窗口有相同的NT版本:

Windows Server 2008 / Windows Vista = NT 6.0

Windows服务器2008 R2 / Windows7 = NT 6.1

Windows XP 64位版本/ Windows Server 2003 / Windows XP Professional x64版本/ Windows Server 2003 R2 = NT 5.2

你可以在这里看到http://en.wikipedia.org/wiki/Windows_NT

我们如何区分这个Windows版本与PHP?

其实有很简单的方法来做到这一点。 它涉及到get_browser函数和browscap.ini 。 你将能够写:

 $browser = get_browser(user_agent...); echo $browser->platform; 

只要不要忘记在其页面上查看关于此功能的注释。