donatj/phpuseragentparser

闪电般快速、极简主义PHP UserAgent字符串解析器。


README

Join the chat at https://gitter.im/PhpUserAgentParser/Lobby

Latest Stable Version Total Downloads License ci.yml

这是什么

简单的PHP用户代理解析器!

在MIT许可下发布:https://www.opensource.org/licenses/mit-license.php

升级到1.*

新的1.*版本不会与0.*版本冲突,升级时无需更改。然而,全局的parse_user_agent已被弃用;它已被命名空间\donatj\UserAgent\parse_user_agent所替代,并具有完全相同的功能。您可以将任何现有的对parse_user_agent的调用替换为\donatj\UserAgent\parse_user_agent

此外,1.x添加了一个便利的对象包装器,您可以选择使用。更多详细信息请参阅下面的使用部分。

为什么使用这个

您有选择用户代理解析器的自由。这个解析器以非常轻量、快速、易懂的方式检测所有现代浏览器。它只有不到200行代码,仅由三个正则表达式组成!它还可以正确识别其他解析器无法识别的IE版本。

它提供了100%的单元测试覆盖率,可以通过Composer安装,并且非常易于使用。

它不做什么

这不是一个浏览器“知识引擎”,而是一个简单的解析器。任何没有由用户代理字符串本身直接提供的任何信息,都不会由这个解析器提供。

操作系统版本

用户代理字符串不是操作系统版本的可靠来源!

  • 许多代理根本不发送信息。
  • 其他提供不同级别的准确性。
  • 仅解析Windows版本几乎会将近加倍代码的大小。

我更感兴趣的是保持这个项目小巧和准确,而不是添加特殊功能,因此我会更专注于能够做好的事情。

话虽如此,我已经为一位客户创建了一个分支来处理这个问题,如果您想查看它,我会不时更新它,但坦白说,如果您需要可靠地检测操作系统版本,使用用户代理字符串并不是最佳选择。我会选择使用JavaScript。

无法检测的浏览器

  • Brave - Brave与Chrome无法区分。这是他们的一项设计决策。

无法检测的平台

  • iPadOS 13+ - 从iPadOS 13开始,并在14中进一步强化,iPadOS返回与macOS相同的完全相同的字符串。不再可以通过UA字符串区分。(#69)

需求

  • php: >=5.4.0
  • ext-ctype: *

安装

PHP User Agent可以通过Composer通过Packagist获取。

使用以下命令安装最新版本

composer require 'donatj/phpuseragentparser'

用法

经典的程序式用法很简单

<?php

// if you're using composer
require __DIR__ . '/../vendor/autoload.php';

// v0 style global function - @deprecated
$uaInfo = parse_user_agent();
// or
// modern namespaced function
$uaInfo = donatj\UserAgent\parse_user_agent();

echo $uaInfo[donatj\UserAgent\PLATFORM] . PHP_EOL;
echo $uaInfo[donatj\UserAgent\BROWSER] . PHP_EOL;
echo $uaInfo[donatj\UserAgent\BROWSER_VERSION] . PHP_EOL;

新的面向对象包装器形式

<?php

use donatj\UserAgent\UserAgentParser;

// if you're using composer
require __DIR__ . '/../vendor/autoload.php';

$parser = new UserAgentParser();

// object-oriented call
$ua = $parser->parse();
// or
// command style invocation
$ua = $parser();

echo $ua->platform() . PHP_EOL;
echo $ua->browser() . PHP_EOL;
echo $ua->browserVersion() . PHP_EOL;

当前检测到的平台

来自donatj\UserAgent\Platforms的预定义辅助常量

当前检测到的浏览器

来自 donatj\UserAgent\Browsers 的预定义帮助常量

更多信息请访问 Donat Studios