nodes/browscap

此包已被弃用且不再维护。未建议替代包。

官方支持的 Browscap PHP 的分支。php 的原生 get_browser() 函数的独立替代品

1.0.1 2017-01-18 10:25 UTC

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

Build Status Code Coverage Scrutinizer Quality Score

安装

运行以下命令通过 Composer 安装

composer require browscap/browscap-php 

然后您可以按如下方式识别当前的用户代理

use BrowscapPHP\Browscap;

$browscap = new Browscap();
$info = $browscap->getBrowser();

推荐设置

在开始之前,您必须下载 browscap.ini 文件并将其转换为缓存。有两种方法。

  1. 下载文件并分两步转换。下载的文件将保存在本地文件中,但不会检查远程文件是否已更改。如果您的缓存损坏,您只需要重新运行 convert 命令。
vendor/bin/browscap-php browscap:fetch
vendor/bin/browscap-php browscap:convert
  1. 下载文件并分一步转换。下载的文件将不会保存在本地文件中,但会检查远程文件是否已更改。如果您的缓存损坏,您需要清除缓存并重新启动进程。
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();

如果您想使用除文件缓存之外的缓存,您可以设置一个不同的缓存。您必须在构建缓存之前更改缓存适配器,使用 convertupdate 命令。

注意:如果您想使用不同的缓存,上面的示例将不会工作,因为它们使用的是预定义的文件缓存

此缓存适配器必须实现 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