nodes / browscap
官方支持的 Browscap PHP 的分支。php 的原生 get_browser() 函数的独立替代品
Requires
- php: ^5.6|^7.0
- mimmi20/file-loader: ^2.0
- mimmi20/wurflcache: ^1.3
- monolog/monolog: ^1.7
- symfony/console: ^2.6|^3.0
- symfony/filesystem: ^2.6|^3.0
- symfony/finder: ^2.6|^3.0
Requires (Dev)
- fabpot/php-cs-fixer: ^1.11
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ^5.2
- squizlabs/php_codesniffer: ^2.5
Suggests
- ext-curl: to use curl requests to get the ini file
- browscap/browscap: to update the source file without downloading, for PHP 5.4+
This package is not auto-updated.
Last update: 2022-02-01 12:57:41 UTC
README
这是 PHP 的原生 get_browser()
函数的用户空间替代品,该函数由浏览器功能项目官方支持。
注意,您目前正在查看不稳定的主分支(将是 3.x 版本)。如果您通过 composer require browscap/browscap-php
安装,根据您的最小稳定性,您可能正在使用最新的 2.x 版本,因此请在此处阅读该分支的文档 here。
安装
运行以下命令通过 Composer 安装
composer require browscap/browscap-php
然后您可以按如下方式识别当前的用户代理
use BrowscapPHP\Browscap; $browscap = new Browscap(); $info = $browscap->getBrowser();
推荐设置
在开始之前,您必须下载 browscap.ini 文件并将其转换为缓存。有两种方法。
- 下载文件并分两步转换。下载的文件将保存在本地文件中,但不会检查远程文件是否已更改。如果您的缓存损坏,您只需要重新运行
convert
命令。
vendor/bin/browscap-php browscap:fetch vendor/bin/browscap-php browscap:convert
- 下载文件并分一步转换。下载的文件将不会保存在本地文件中,但会检查远程文件是否已更改。如果您的缓存损坏,您需要清除缓存并重新启动进程。
vendor/bin/browscap-php browscap:update
如果您只想检查 browscap.ini 是否有新版本可用,您可以使用 browscap:check-update
命令。
注意:创建/更新缓存和检查更新的两种方法都默认使用 standard
模式文件。如果您需要更详细的信息,您可以使用 remote-file
选项进行更改。请使用帮助功能了解此参数。
vendor/bin/browscap-php browscap:update --remote-file Full_PHP_BrowscapINI
除了获取之外,每个操作都将在项目内部 resources
目录中使用一个缓存。如果您使用 Composer 更新此库,缓存也将被清除。如果您想避免这种情况并想设置自己的缓存文件夹,您可以使用 cache
选项。如果您这样做,您必须为此路径设置一个缓存实例(见下文)。
vendor/bin/browscap-php browscap:update --cache ./browscap-cache
注意:获取数据(获取、更新、检查更新)的操作可能会遇到远程主机 browscap.org 的速率限制。如果发生这种情况,则会抛出异常。
以下是一个使用 composer 并从全局 $_SERVER 变量中获取用户代理的示例。
require 'vendor/autoload.php'; // The Browscap class is in the BrowscapPHP namespace, so import it use BrowscapPHP\Browscap; // Create a new Browscap object (loads or creates the cache) $bc = new Browscap(); // Get information about the current browser's user agent $current_browser = $bc->getBrowser();
如果您有一个用户代理,您可以更改函数
$current_browser = $bc->getBrowser($the_user_agent);
如果您想记录检测器发生的事情,您可以设置一个记录器。此记录器必须实现 Psr\Log\LoggerInterface 的记录器接口
$bc = new Browscap(); $bc->setLogger($logger); $current_browser = $bc->getBrowser();
如果您想使用除文件缓存之外的缓存,您可以设置一个不同的缓存。您必须在构建缓存之前更改缓存适配器,使用 convert
或 update
命令。
注意:如果您想使用不同的缓存,上面的示例将不会工作,因为它们使用的是预定义的文件缓存
此缓存适配器必须实现 WurflCache\Adapter\AdapterInterface 的适配器接口
$adapter = new \WurflCache\Adapter\Memcache(<your memcache configuration as array>); $bc = new Browscap(); $bc->setCache($adapter); $current_browser = $bc->getBrowser();
在这个示例中,使用memcache来存储bropwscap.ini文件的完整版本。
$adapter = new \WurflCache\Adapter\Memcache(<your memcache configuration as array>); $bc = new Browscap(); $bc ->setCache($adapter) ->update(\BrowscapPHP\Helper\IniLoader::PHP_INI_FULL) ;
如果您位于代理后面,您必须设置包含代理数据的配置。对于您的连接不需要的部分(如如果使用标准端口,则不需要设置端口号)不需要设置。
$proxyConfig = array( 'ProxyProtocol' => 'http', 'ProxyHost' => 'example.org', //'ProxyPort' => null, 'ProxyAuth' => 'basic', 'ProxyUser' => 'your username', 'ProxyPassword' => 'your super secret password', ); $bc = new Browscap(); $bc->setOptions($proxyConfig);
问题和功能请求
请将您的问题和新功能请求报告到GitHub Issue Tracker:https://github.com/browscap/browscap-php/issues
请在此处报告browscap.ini文件中错误识别的用户代理和浏览器检测:https://github.com/browscap/browscap/issues