我正在编写保存用户设备详细信息的代码。但是,当我使用PHP用户代理时,它将返回整个信息字符串。如何仅提取设备名称,例如iPhone 6,三星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
答案 0 :(得分:1)
这里是您的代码。
$str = "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";
$pos1 = strpos($str, '(')+1;
$pos2 = strpos($str, ')')-$pos1;
$part = substr($str, $pos1, $pos2);
$parts = explode(" ", $part);
echo $parts[2].' '.$parts[3].' '.$parts[4];
答案 1 :(得分:1)
可以编写多种形式的用户代理,很难仅通过正则表达式或简单的逻辑来提取信息。更好的方法是搜索已知可能发生的给定设备的列表,例如从this answer中搜索,但是这可能会使提取版本信息变得困难。
相反,我建议使用第三方库,例如device-detector,并在以下内容中使用某些内容:
fetch(url, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'multipart/form-data'
},
body: formData
})