Laravel Packages

PHP Desktop and Mobile User Agent Parser

Published Updated
PHP Desktop and Mobile User Agent Parser image

The jenssegers-agent package is a desktop/mobile user agent parser with support for Laravel, based on MobileDetect. You can use this package in any PHP application, and it also provides a Laravel service provider, giving you a service Facade:

use Jenssegers\Agent\Facades\Agent;
 
Agent::is('Firefox');
Agent::is('iPhone');
 
// Magic methods
Agent::isFirefox();
Agent::isIPhone();
 
// Device type
Agent::isDesktop();
Agent::isMobile();
Agent::isTablet();
Agent::isPhone();

Besides user agent helpers, the Agent service provides a language helper, device name method, platform, and more. For example, you could get the accepted browser languages using the following method:

Agent::languages(); // ['en-us', 'en']

Using the languages method, you could set the locale during a request in a middleware. Here's a simple example just to illustrate just off the top of my head:

public function handle(Request $request, Closure $next): Response
{
$supported_locales = ['en', 'es'];
$user_locales = Agent::languages();
 
foreach ($user_locales as $locale) {
if (in_array($locale, $supported_locales)) {
app()->setLocale($locale);
}
}
 
return $next($request);
}

If you do not support the locale, the config('app.fallback_locale') setting will define the locale. You might also use the languages() method in middleware to redirect a locale-specific route prefix /{locale}/ based on the user agent's supported language.

Route::prefix('/{locale}')->group(function () {
// ...
})->whereIn('locale', ['en', 'es']);

The Agent service can also determine if the current user agent is a bot and what type of bot:

// Is the user a bot?
Agent::isRobot(); // bool
 
// get the robot name
Agent::robot();

Lastly, to get the device name, platform, and browser, you can use the aptly named methods on the facade:

Agent::device(); // "Macintosh"
Agent::platform(); // "OS X"
Agent::browser(); // "Safari"
Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

acquaintsoft logo
Acquaint Softtech

Hire Laravel developers with AI expertise at $20/hr. Get started in 48 hours.

Visit Acquaint Softtech

The latest

View all →
Laravel Rulebook: Business Rules That Change by Date image

Laravel Rulebook: Business Rules That Change by Date

Read article
Taylor disabled GitHub Issues on most Laravel open-source packages. image

Taylor disabled GitHub Issues on most Laravel open-source packages.

Read article
Exclude Vendor and Default Commands in `php artisan dev` image

Exclude Vendor and Default Commands in `php artisan dev`

Read article
The Laracon Archive image

The Laracon Archive

Read article
Group Adjacent Collection Items in Laravel with chunkBy() image

Group Adjacent Collection Items in Laravel with chunkBy()

Read article
Laravel queue:work Now Prints Why the Worker Stopped image

Laravel queue:work Now Prints Why the Worker Stopped

Read article