This is the PHP library for the ua-parser project.
v2.0 of the PHP library, released in December 2012, marked a huge transition from the previous pseudo-port of ua-parser
to a true port that matches up well with the other libraries in the ua-parser
repo. The primary changes:
- the
UAParser
class is now dynamic - properties are nested (e.g. $result->family is now $result->ua->family)
- a user agent string is now required when using
parse()
. the auto-magical "use the server provided UA" is no longer supported. uaParse()
,osParse()
, anddeviceParse()
are public and can be used to just return those select bits for a given user agent string.- the
is*
boolean properties (e.g. isMobile) have been dropped. they now exist as part of theua-classifier
project.
Please refer to the CHANGELOG
for the full list of changes.
You can test the PHP library with your browser.
Straightforward:
require("uaparser.php");
$ua = "Mozilla/5.0 (Macintosh; Intel Ma...";
$parser = new UAParser;
$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->toVersionString; // 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->patch_minor; // [null]
print $result->os->toString; // Mac OS X 10.7.5
print $result->os->toVersionString; // 10.7.5
print $result->device->family; // Other
print $result->toFullString; // Safari 6.0.2/Mac OS X 10.7.5
print $result->uaOriginal; // Mozilla/5.0 (Macintosh; Intel Ma...
You can use your own regexes.json
file if you've customized the official file. I strongly encourage you to push back any changes you may have so others can benefit. That said, to use your own do the following:
require("uaparser.php");
$parser = new UAParser("path/to/custom/regexes.json");
A command line utility is now included with the PHP library. The following commands are supported:
Provides simple usage information:
php uaparser-cli.php
Fetches an updated YAML file for ua-parser
and overwrites the current JSON file. You can use the following as part of a cron job that runs nightly.
php uaparser-cli.php -g [-s] [-n]
By default is verbose. Use -s
to turn that feature off. By default creates a back-up. Use -n
to turn that feature off.
With the change to v2.0 you may have an existing and customized YAML file for ua-parser
. Use the following to convert it to JSON.
php uaparser-cli.php -c [-s] [-n]
By default is verbose. Use -s
to turn that feature off. By default creates a back-up. Use -n
to turn that feature off.
If you need to add a new UA it's easier to edit the original YAML and then convert it to JSON.
php uaparser-cli.php -y
Fetches an updated YAML file. Warning: This method overwrites any existing regexes.yaml
file.
Parses the supplied Apache log file to test UAParser.php. Saves the UA to a file when the UA or OS family aren't recognized or when the UA is listed as a generic smartphone or as a generic feature phone.
php uaparser-cli.php -l "/path/to/apache/logfile"
Parses a user agent string and dumps the results as a list.
php uaparser-cli.php [-p] [-j] "your user agent string"
Use the -j
flag to print the result as JSON. Use the -p
flag to pretty print the JSON result when using PHP 5.4+.
Thanks to the original ua-parser team for making the YAML file available for others to build upon.
Also, many thanks to the following major contributors to the PHP library:
- Bryan Shelton
- Michael Bond
- @rjd22
- Timo Tijhof
- Marcus Bointon
- Ryan Parman
- Pravin Dahal