PHP 桌面和移动用户代理解析器
最后更新于 作者: Paul Redmond
该 jenssegers-agent 包是基于 MobileDetect 的桌面/移动用户代理解析器,支持 Laravel。您可以在任何 PHP 应用程序中使用此包,它还提供 Laravel 服务提供商,为您提供服务 Facade
use Jenssegers\Agent\Facades\Agent; Agent::is('Firefox');Agent::is('iPhone'); // Magic methodsAgent::isFirefox();Agent::isIPhone(); // Device typeAgent::isDesktop();Agent::isMobile();Agent::isTablet();Agent::isPhone();
除了用户代理帮助程序外,Agent 服务还提供语言帮助程序、设备名称方法、平台等等。例如,您可以使用以下方法获取接受的浏览器语言
Agent::languages(); // ['en-us', 'en']
使用 languages 方法,您可以在中间件中设置请求的区域设置。这是一个简单的示例,仅为了说明我的想法
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);}
如果您不支持区域设置,则 config('app.fallback_locale')
设置将定义区域设置。您也可以在中间件中使用 languages()
方法根据用户代理支持的语言重定向特定于区域设置的路由前缀 /{locale}/
。
Route::prefix('/{locale}')->group(function () { // ...})->whereIn('locale', ['en', 'es']);
Agent
服务还可以确定当前用户代理是否为机器人以及是什么类型的机器人
// Is the user a bot?Agent::isRobot(); // bool // get the robot nameAgent::robot();
最后,要获取设备名称、平台和浏览器,可以使用 facade 上恰如其分的命名方法
Agent::device(); // "Macintosh"Agent::platform(); // "OS X"Agent::browser(); // "Safari"