Search by

webard / agent

webard

Desktop/mobile user agent parser with support for Laravel, based on Mobiledetect. Maintained fork of al-saloul/agent.

Package info

github.com/webard/agent

pkg:composer/webard/agent

Statistics

Installs: 92

Dependents: 1

Suggesters: 0

Stars: 0

5.0.0 2026-09-16 09:34 UTC

This package is auto-updated.

Last update: 2026-09-16 09:44:52 UTC


README

tests

A PHP desktop/mobile user agent parser with support for Laravel, based on Mobile Detect with desktop support and additional functionality.

About this fork

This is a maintained fork of al-saloul/agent, which is itself a fork of the abandoned jenssegers/agent. It exists because the upstream package has not been released since January 2025 and emits a PHP 8.4 deprecation on every request.

The namespace is deliberately unchanged, so this is a drop-in replacement — swap the package in composer.json and your use Alsaloul\Agent\Agent; imports keep working. composer.json declares "replace": {"al-saloul/agent": "*"}, so the two cannot be installed side by side and duplicate the classes.

Changes against upstream 4.1.1:

  • Fixed the Implicitly marking parameter $headers as nullable deprecation on PHP 8.4+, which upstream emits when the class is compiled, so consumers cannot suppress it from their own code.
  • Requires PHP 8.1+ and jaybizzle/crawler-detect 1.3+, the first release without the same deprecation. Upstream declared >= 5.6 while shipping dev dependencies that no longer install on a supported PHP.
  • Added a test suite and CI across PHP 8.1 to 8.5. The suite fails on deprecations, warnings and notices, so a regression of the above cannot land unnoticed. Upstream has neither tests nor CI.

The fix is offered back upstream in al-saloul/agent#3.

Installation

Install using composer:

composer require webard/agent

If you are migrating from al-saloul/agent, remove it first — replace will refuse to install both:

composer remove al-saloul/agent
composer require webard/agent

Laravel (optional)

Add the service provider in config/app.php:

Alsaloul\Agent\AgentServiceProvider::class,

And add the Agent alias to config/app.php:

'Agent' => Alsaloul\Agent\Facades\Agent::class,

Basic Usage

Start by creating an Agent instance (or use the Agent Facade if you are using Laravel):

use Alsaloul\Agent\Agent;

$agent = new Agent();

If you want to parse user agents other than the current request in CLI scripts for example, you can use the setUserAgent and setHttpHeaders methods:

$agent->setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2');
$agent->setHttpHeaders($headers);

All of the original Mobile Detect methods are still available, check out some original examples at https://github.com/serbanghita/Mobile-Detect/wiki/Code-examples

Is?

Check for a certain property in the user agent.

$agent->is('Windows');
$agent->is('Firefox');
$agent->is('iPhone');
$agent->is('OS X');

Magic is-method

Magic method that does the same as the previous is() method:

$agent->isAndroidOS();
$agent->isNexus();
$agent->isSafari();

Mobile detection

Check for mobile device:

$agent->isMobile();
$agent->isTablet();

Match user agent

Search the user agent with a regular expression:

$agent->match('regexp');

Additional Functionality

Accept languages

Get the browser's accept languages. Example:

$languages = $agent->languages();
// ['nl-nl', 'nl', 'en-us', 'en']

Device name

Get the device name, if mobile. (iPhone, Nexus, AsusTablet, ...)

$device = $agent->device();

Operating system name

Get the operating system. (Ubuntu, Windows, OS X, ...)

$platform = $agent->platform();

Browser name

Get the browser name. (Chrome, IE, Safari, Firefox, ...)

$browser = $agent->browser();

Desktop detection

Check if the user is using a desktop device.

$agent->isDesktop();

This checks if a user is not a mobile device, tablet or robot.

Phone detection

Check if the user is using a phone device.

$agent->isPhone();

Robot detection

Check if the user is a robot. This uses jaybizzle/crawler-detect to do the actual robot detection.

$agent->isRobot();

Robot name

Get the robot name.

$robot = $agent->robot();

Browser/platform version

MobileDetect recently added a version method that can get the version number for components. To get the browser or platform version you can use:

$browser = $agent->browser();
$version = $agent->version($browser);

$platform = $agent->platform();
$version = $agent->version($platform);

Note, the version method is still in beta, so it might not return the correct result.

Testing

composer test

License

Licensed under The MIT License (MIT). Original work copyright Jens Segers, with subsequent work by Mohammed Al Saloul.