Question

I've been investigating various user agent parsers and have been surprised at the complexity and size required.

If I'm only interested in parsing for the OS into three categories: Windows, Mac, or Other — how can I do this efficiently, lightly, and quickly?

I don't care about browsers, versions, or anything else. Just Mac, Windows or Other.

What do you recommend?

Here's what I have so far:

if (strpos($user_agent, 'Windows')) $os = 'Windows';
elseif (strpos($user_agent, 'Macintosh')) $os = 'Macintosh';
else $os = 'Other';

Any danger in this straight forward approach?

Was it helpful?

Solution

This might not be enough. Older Windows versions tend to have WinNT prefix instead. Looking for Win only also match non-windows user agents. Also for Macintosh, search for Mac only. Usually it is listed as Mac OS in user agents.

This is a good reg exp for Windows detection:

/Win(?:dows )?([^do]{2})\s?(\d+\.\d+)?/
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top