browscap / browscap-php
PHP原生get_browser()函数的独立替代方案
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- ext-json: *
- guzzlehttp/guzzle: ^7.8.0
- league/flysystem: ^3.21.0
- matthiasmullie/scrapbook: ^1.5.1
- monolog/monolog: ^3.5.0
- psr/log: ^2.0.0 || ^3.0.0
- psr/simple-cache: ^2.0.0 || ^3.0.0
- symfony/console: ^6.4.0 || ^7.0.0
- symfony/filesystem: ^6.4.0 || ^7.0.0
Requires (Dev)
- doctrine/coding-standard: ^12.0.0
- mikey179/vfsstream: ^1.6.11
- phpstan/extension-installer: ^1.3.1
- phpstan/phpstan: ^1.10.43
- phpstan/phpstan-beberlei-assert: ^1.1.2
- phpstan/phpstan-deprecation-rules: ^1.1.4
- phpstan/phpstan-phpunit: ^1.3.15
- phpunit/phpunit: ^10.4.2
Suggests
- ext-curl: to use curl requests to get the ini file
- 7.5.x-dev
- 7.4.x-dev
- 7.4.0
- 7.3.x-dev
- 7.3.0
- 7.2.x-dev
- 7.2.0
- 7.1.x-dev
- 7.1.0
- 7.0.x-dev
- 7.0.0
- 6.2.x-dev
- 6.1.x-dev
- 6.1.0
- 6.0.x-dev
- 6.0.0
- 5.1.x-dev
- 5.1.0
- 5.0.x-dev
- 5.0.0
- 4.3.x-dev
- 4.3.0
- 4.2.2
- 4.2.1
- 4.2.0
- 4.1.0
- 4.0.0
- 3.1.0
- 3.0.0
- 3.0.0-rc.1
- 3.0.0-beta.1
- 3.0.0-alpha.1
- 2.x-dev
- 2.1.1
- 2.1.0
- 2.1.0-alpha.1
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 2.0.0-beta
- 1.0.0
- dev-dependabot/composer/phpstan/phpstan-1.12.4
- dev-dependabot/composer/phpstan/phpstan-deprecation-rules-1.2.1
- dev-dependabot/composer/phpstan/phpstan-beberlei-assert-1.1.3
- dev-dependabot/composer/phpstan/phpstan-1.12.3
- dev-dependabot/composer/phpstan/extension-installer-1.4.3
This package is auto-updated.
Last update: 2024-09-20 05:51:25 UTC
README
这是一个PHP原生get_browser()
函数的用户级替代方案,它由浏览器能力项目官方支持。
安装
运行以下命令通过Composer安装
composer require browscap/browscap-php
然后您可以通过这种方式识别当前的用户代理
$cache = new \MatthiasMullie\Scrapbook\Psr16\SimpleCache($doctrineFileCache); // or maybe any other PSR-16 compatible caches $logger = new \Monolog\Logger('name'); // or maybe any other PSR-3 compatible logger $browscap = new \BrowscapPHP\Browscap($cache, $logger); $info = $browscap->getBrowser();
推荐配置
在您开始之前,您必须运行browscap:fetch
命令以下载browscap.ini
文件,并使用browscap:convert
命令将其转换为缓存。有两种方法。
a. 下载文件并分两步转换。下载的文件将存储在本地文件中,但不会检查远程文件是否已更改。如果您的缓存损坏,您只需要重新运行convert
命令。
vendor/bin/browscap-php browscap:fetch vendor/bin/browscap-php browscap:convert
b. 下载文件并一步转换。下载的文件将不会存储在本地文件中,但会检查远程文件是否已更改。如果您的缓存损坏,您需要清除缓存并重新启动进程。
vendor/bin/browscap-php browscap:update
如果您想自动更新使用的缓存,我们建议使用单独的cron作业调用上述命令。
7.0.x版本中的BC中断
- [BC] BrowscapPHP\Command\UpdateCommand was marked "@internal"
- [BC] BrowscapPHP\Command\FetchCommand was marked "@internal"
- [BC] BrowscapPHP\Command\ConvertCommand was marked "@internal"
- [BC] BrowscapPHP\Command\CheckUpdateCommand was marked "@internal"
- [BC] BrowscapPHP\Command\ParserCommand was marked "@internal"
- [BC] BrowscapPHP\Helper\Filesystem was marked "@internal"
设置示例
$fileCache = new \League\Flysystem\Local\LocalFilesystemAdapter($cacheDir); $filesystem = new \League\Flysystem\Filesystem($fileCache); $cache = new \MatthiasMullie\Scrapbook\Psr16\SimpleCache( new \MatthiasMullie\Scrapbook\Adapters\Flysystem($filesystem) ); $logger = new \Monolog\Logger('name'); $bc = new \BrowscapPHP\Browscap($cache, $logger); $result = $bc->getBrowser();
注意:您可以使用实现PSR-16接口的任何其他缓存。
使用完整的browscap.ini文件
$bc = new \BrowscapPHP\BrowscapUpdater(); $bc->update(\BrowscapPHP\Helper\IniLoaderInterface::PHP_INI_FULL);
设置代理配置
如果您位于代理后面或需要特定的配置,您必须设置一个客户端实例。有关更多信息,请参阅Guzzle文档。
$proxyConfig = [ 'proxy' => [ 'http' => 'tcp://localhost:8125', 'https' => 'tcp://localhost:8124', ], ]; $client = new \GuzzleHttp\Client($proxyConfig); $bcu = new BrowscapUpdater(); $bcu->setClient($client);
使用示例
从全局$_SERVER变量获取用户代理
$bc = new \BrowscapPHP\Browscap(); $current_browser = $bc->getBrowser();
使用示例用户代理
$bc = new \BrowscapPHP\Browscap($cache, $logger); $current_browser = $bc->getBrowser($the_user_agent);
CLI命令
注意:如果您不想使用文件缓存,则不能使用CLI命令。目前不能在那里使用其他缓存。注意:每个操作(获取、更新、检查更新)从远程主机browscap.org获取数据可能会遇到该网站的速率限制。如果发生这种情况,将抛出异常。
每个CLI命令在一切正常时返回零
。
check-update
如果您只想检查是否存在新的browscap.ini版本,可以使用check-update
命令。
vendor/bin/browscap-php browscap:check-update
选项
cache
(可选)缓存目录的相对路径
返回代码
- 1:未找到缓存的版本
- 2:没有新版本可用
- 3:检查缓存版本时发生错误
- 4:获取远程版本时发生错误
- 5:发生其他错误
fetch
fetch
命令从browscap.org下载ini文件。
vendor/bin/browscap-php browscap:fetch
选项
cache
(可选)缓存目录的相对路径remote-file
(可选)如果不希望下载标准文件,则需要,可能的值是PHP_BrowscapINI
下载标准文件(默认值)Lite_PHP_BrowscapINI
下载轻量级文件Full_PHP_BrowscapINI
下载完整文件
file
(可选)存储远程内容的本地文件的相对路径
返回代码
- 3:检查缓存版本时发生错误
- 9:获取远程数据时发生错误
- 10:发生其他错误
convert
convert
命令读取本地存储的browscap.ini文件并将内容写入缓存。
vendor/bin/browscap-php browscap:convert
选项
file
(可选) 存储远程内容的本地文件的相对路径,这应该与fetch命令中的文件相同cache
(可选)缓存目录的相对路径
返回代码
- 6: 转换的文件名缺失
- 7: 转换的文件不可用或不可读
- 8: 读取文件时发生其他错误
更新
update
命令从 browscap.org 下载 ini 文件并将其内容写入缓存。不会创建本地文件。
vendor/bin/browscap-php browscap:update
选项
remote-file
(可选) 只有在你不想下载标准文件时才需要,可能的值包括PHP_BrowscapINI
下载标准文件(默认值)Lite_PHP_BrowscapINI
下载轻量级文件Full_PHP_BrowscapINI
下载完整文件
cache
(可选)缓存目录的相对路径
返回代码
- 3:检查缓存版本时发生错误
- 9:获取远程数据时发生错误
- 10:发生其他错误
解析
parse
命令解析指定的用户代理并将结果写入控制台。
vendor/bin/browscap-php browscap:parse
选项
user-agent
(必需) 应解析的用户代理cache
(可选)缓存目录的相对路径
返回代码
- 11: 解析用户代理时发生其他错误
CLI 示例
使用完整的 browscap.ini 文件更新缓存
注意:创建/更新缓存的两方式都会默认使用 standard
模式文件。如果你想获取更详细的信息,可以使用 remote-file
选项来更改此设置。请使用帮助函数了解此参数。
vendor/bin/browscap-php browscap:update --remote-file Full_PHP_BrowscapINI
更新自定义缓存目录
除了 fetch 以外的每个操作都会在项目内部 resources
目录中创建一个缓存。如果你使用 composer 更新此库,缓存也会被清除。如果你想避免这种情况,并想设置自己的缓存文件夹,可以使用 cache
选项。如果你这样做,你必须为该路径设置一个缓存实例。
vendor/bin/browscap-php browscap:update --cache ./browscap-cache
问题和功能请求
请在 GitHub Issue Tracker 上报告你的问题和请求新功能:https://github.com/browscap/browscap-php/issues
请在此处报告 browscap.ini 文件中错误识别的用户代理和浏览器检测:https://github.com/browscap/browscap/issues