This library provides simple browser detection for PHP. It uses a simple and fast algorithm to recognize major browsers.
The UserAgent package was developed for our spam-protection system Gatekeeper.
PHP provides a native function to detect the user browser: get_browser()
. This function requires
the browscap.ini
file which is 300KB+ in size. Loading and processing this file impacts the script performance. And sometimes,
the production server just doesn't provide browscap.ini
.
Although get_browser()
surely provides excellent detection results, in most cases a much simpler method can be just as effective.
The FlameCore UserAgent library has the advantage of being compact and easy to extend.
To make use of the API, include the vendor autoloader and use the classes:
namespace Acme\MyApplication;
use FlameCore\UserAgent\UserAgent;
require 'vendor/autoload.php';
// Create a user agent object
$userAgent = UserAgent::createFromGlobal();
Then the parsed values can be retrieved using the getter methods:
$userAgent->getBrowserName(); // firefox
$userAgent->getBrowserVersion(); // 3.6
$userAgent->getBrowserEngine(); // gecko
$userAgent->getOperatingSystem(); // linux
When you create a UserAgent
object, the current user agent string is used. You can specify another user agent string:
// Use another User Agent string
$userAgent = UserAgent::create('msnbot/2.0b (+http://search.msn.com/msnbot.htm)');
$userAgent->getBrowserName(); // msnbot
// Use current User Agent string
$userAgent = UserAgent::create($_SERVER['HTTP_USER_AGENT']);
// ... which is equivalent to:
$userAgent = UserAgent::createFromGlobal();
Create a file called composer.json
in your project directory and put the following into it:
{
"require": {
"flamecore/user-agent": "dev-master"
}
}
Install Composer if you don't already have it present on your system:
$ curl -sS https://getcomposer.org/installer | php
Use Composer to download the vendor libraries and generate the vendor/autoload.php file:
$ php composer.phar install
- You must have at least PHP version 5.4 installed on your system.
If you want to contribute, please see the CONTRIBUTING file first.
Thanks to the contributors:
- Christian Neff (secondtruth)