flycro / ua-parser-modern-php
PHP port of ua-parser-modern - detect browser, engine, OS, CPU and device from User-Agent strings
v0.1.1
2026-03-19 23:25 UTC
Requires
- php: ^8.2
- ext-mbstring: *
Requires (Dev)
- laravel/pint: ^1.0
- pestphp/pest: ^4.0
- phpstan/phpstan: ^2.1
README
PHP port of ua-parser-modern - detect Browser, Engine, OS, CPU, and Device type/model from User-Agent strings.
All regex patterns are ported 1:1 from the original JavaScript source to ensure identical detection behavior.
Requirements
- PHP 8.2+
ext-mbstring
Installation
composer require flycro/ua-parser-modern-php
Usage
Parse everything at once
use UaParserModern\UserAgentParser; $result = UserAgentParser::parse($userAgent); $result->browser->name; // 'Chrome' $result->browser->version; // '120.0.0.0' $result->browser->major; // '120' $result->os->name; // 'Windows' $result->os->version; // '10' $result->device->model; // null $result->device->type; // null $result->device->vendor; // null $result->engine->name; // 'Blink' $result->engine->version; // '120.0.0.0' $result->cpu->architecture; // 'amd64'
Parse individual components
Only parse what you need:
$browser = UserAgentParser::parseBrowser($userAgent); $browser->name; // 'Chrome' $browser->version; // '120.0.0.0' $browser->major; // '120' $os = UserAgentParser::parseOS($userAgent); $os->name; // 'Windows' $os->version; // '10' $device = UserAgentParser::parseDevice($userAgent); $engine = UserAgentParser::parseEngine($userAgent); $cpu = UserAgentParser::parseCPU($userAgent);
JSON serialization
All result objects implement JsonSerializable:
$result = UserAgentParser::parse($userAgent); json_encode($result); // {"ua":"...","browser":{"name":"Chrome","version":"120.0.0.0","major":"120"},...}
Convert to array
$result->toArray(); // Full nested array $result->browser->toArray(); // ['name' => 'Chrome', 'version' => '120.0.0.0', 'major' => '120']
Result Types
All results are readonly value objects:
| Method | Return Type | Properties |
|---|---|---|
parse() |
ParseResult |
ua, browser, device, engine, os, cpu |
parseBrowser() |
BrowserResult |
name, version, major |
parseDevice() |
DeviceResult |
model, type, vendor |
parseEngine() |
EngineResult |
name, version |
parseOS() |
OSResult |
name, version |
parseCPU() |
CPUResult |
architecture |
Testing
composer test
Credits
This is a PHP port of ua-parser-modern by Anthony Fu, which was forked from my-ua-parser by Matteo Collina, which was a fork of ua-parser-js by Faisal Salman.
License
The MIT License (MIT). Please see License File for more information.