php - 如何从 php 用户代理中提取移动设备名称?

标签 php user-agent

我正在编写代码来保存用户的设备详细信息。但是当我使用 PHP 用户代理时,它会返回整串信息。如何仅提取设备名称,例如仅提取型号名称,如 iPhone 6、Samsung Galaxy a5 等?

我尝试了一些正则表达式,但那会是很长的代码,我无法覆盖所有设备。

我得到了

Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1

我只想要iPhone OS 10_3_1

最佳答案

用户代理的编写方式有很多种,很难仅通过正则表达式或简单的逻辑来提取信息。更好的方法是搜索您知道可能出现的给定设备的列表,例如来自 this answer ,但是这可能会使提取版本信息变得困难。

相反,我建议使用第三方库,例如 device-detector并使用以下内容:

use DeviceDetector\DeviceDetector;

// Fetch the user agent
$userAgent = $_SERVER['HTTP_USER_AGENT'];

// Create an instance of DeviceDetector
$dd = new DeviceDetector($userAgent);

// Extract any information you want
$osInfo = $dd->getOs();
$device = $dd->getDeviceName();
$brand = $dd->getBrandName();
$model = $dd->getModel();

关于php - 如何从 php 用户代理中提取移动设备名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55324620/

相关文章:

ruby - 在 GO (Golang) 中解析用户代理 - Tobie/ua-parser

node.js - Node JS 中所有 Controller 的全局变量

php - 选择按天分组的命中,包括命中数为 0 的天数

php - 从表中删除重复项并添加值

php - fmod 返回不正确的结果

php - mock 重载 - 抽象类

php - 将 php-ai/php-ml 与 php 一起使用

android - 除了 WebView.getSettings().getUserAgentString() 之外,有没有办法获取默认的用户代理字符串?

RESTful API : require user agent string?

windows-phone - 如何永久更改 Windows Phone 上的用户代理?