【发布时间】:2017-12-28 15:19:06
【问题描述】:
我想从 User-Agent 获取 PHP 中的确切 iOS 版本。我很清楚伪造用户代理的可能性,但就我而言,这不是问题。
一个普通的 iPhone 用户代理字符串如下所示:
Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_1 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) Version/11.0 Mobile/15C153 Safari/604.1
如何从中提取操作系统版本?在这种情况下,它是“11_2_1”。我必须能够从 iPhone、iPad 和 iPod 用户代理中提取它。它也可以是 X_X 而不是 X_X_X。
到目前为止,我得到了这个:
<?php
$version = preg_match('(iPad|iPhone|iphone|iPod).*?(OS |os |OS\_)(\d+
((_|\.)\d)?((_|\.)\d)?)', $_SERVER['HTTP_USER_AGENT']);
echo $version;
?>
但是,从 iPhone 访问它会显示一个空白页面。有人可以帮帮我吗?
提前致谢。
【问题讨论】:
-
i(?:phone|pad|pod) os ([\d_]+)或i(?:phone|pad|pod) os \K[\d_]+或ip(?:hone|[ao]d) os \K[\d_]+? -
注意
preg_match()在错误时返回 false,不会回显。你可能想要var_dump()。 -
@AlexHowansky 返回 bool(false);
-
@ctwheels 抱歉,我有点迷路了……经验不足。
-
@Johnny 给我一点时间来发布答案
标签: php ios regex user-agent