告别过时的get_browser():使用browscap/browscap-php精准识别浏览器信息

php 提供的 get_browser() 函数,相信很多开发者都用过。但是,它依赖于一个 browscap.ini 文件,这个文件需要定期更新,否则识别的浏览器信息就会不准确。而且,原生的 get_browser() 函数在某些服务器环境下配置比较麻烦。那么,有没有更好的替代方案呢?

composer在线学习地址:学习地址

browscap/browscap-php 库就是为此而生的。它是一个用户级的 get_browser() 函数替代方案,由 Browser Capabilities Project 官方支持。这意味着你可以获得更准确、更及时的浏览器信息。

安装和基本使用

首先,你需要使用 composer 安装这个库:

composer require browscap/browscap-php

安装完成后,就可以在你的代码中使用它了:

立即学习PHP免费学习笔记(深入)”;

<?php  require_once 'vendor/autoload.php';  use BrowscapPHPBrowscap; use MonologLogger; use MonologHandlerStreamHandler; use MatthiasMullieScrapbookPsr16SimpleCache; use MatthiasMullieScrapbookAdaptersFlysystem; use LeagueFlysystemFilesystem; use LeagueFlysystemLocalLocalFilesystemAdapter;  // 1. 配置缓存(推荐使用 PSR-16 兼容的缓存) $adapter    = new LocalFilesystemAdapter(__DIR__ . '/cache'); // 缓存目录 $filesystem = new Filesystem($adapter); $cache      = new SimpleCache(new Flysystem($filesystem));  // 2. 配置日志(可选) $log = new Logger('browscap'); $log->pushHandler(new StreamHandler('php://stdout', Logger::DEBUG));  // 3. 创建 Browscap 实例 $browscap = new Browscap($cache, $log);  // 4. 获取浏览器信息 $browser = $browscap->getBrowser();  // 现在 $browser 包含了当前用户代理的详细信息 print_r($browser);

推荐的设置

在使用之前,你需要下载 browscap.ini 文件,并将其转换为缓存。有两种方法:

a. 分步下载和转换

vendor/bin/browscap-php browscap:fetch vendor/bin/browscap-php browscap:convert

这种方式会将下载的文件存储在本地,但不会检查远程文件是否已更改。如果你的缓存损坏,只需重新运行 convert 命令即可。

b. 一步下载和转换

vendor/bin/browscap-php browscap:update

这种方式不会存储本地文件,但会检查远程文件是否已更改。如果你的缓存损坏,需要清除缓存并重新开始。

建议设置一个独立的 cron job 定期调用 browscap:update 命令,以自动更新缓存。

命令行工具

browscap/browscap-php 提供了丰富的命令行工具,方便你管理浏览器信息库:

  • browscap:check-update: 检查是否有新的 browscap.ini 版本可用。
  • browscap:fetch: 从 browscap.org 下载 browscap.ini 文件。
  • browscap:convert: 将本地存储的 browscap.ini 文件转换为缓存。
  • browscap:update: 下载 browscap.ini 文件并写入缓存(一步完成)。
  • browscap:parse: 解析给定的 User Agent,并将结果输出到控制台。

使用示例

  • 从 $_SERVER 变量获取 User Agent:

    <?php  require_once 'vendor/autoload.php';  use BrowscapPHPBrowscap; use MonologLogger; use MonologHandlerStreamHandler; use MatthiasMullieScrapbookPsr16SimpleCache; use MatthiasMullieScrapbookAdaptersFlysystem; use LeagueFlysystemFilesystem; use LeagueFlysystemLocalLocalFilesystemAdapter;  // 1. 配置缓存(推荐使用 PSR-16 兼容的缓存) $adapter    = new LocalFilesystemAdapter(__DIR__ . '/cache'); // 缓存目录 $filesystem = new Filesystem($adapter); $cache      = new SimpleCache(new Flysystem($filesystem));  // 2. 配置日志(可选) $log = new Logger('browscap'); $log->pushHandler(new StreamHandler('php://stdout', Logger::DEBUG));  // 3. 创建 Browscap 实例 $browscap = new Browscap($cache, $log);  $current_browser = $browscap->getBrowser($_SERVER['HTTP_USER_AGENT']);
  • 使用指定的 User Agent:

    <?php  require_once 'vendor/autoload.php';  use BrowscapPHPBrowscap; use MonologLogger; use MonologHandlerStreamHandler; use MatthiasMullieScrapbookPsr16SimpleCache; use MatthiasMullieScrapbookAdaptersFlysystem; use LeagueFlysystemFilesystem; use LeagueFlysystemLocalLocalFilesystemAdapter;  // 1. 配置缓存(推荐使用 PSR-16 兼容的缓存) $adapter    = new LocalFilesystemAdapter(__DIR__ . '/cache'); // 缓存目录 $filesystem = new Filesystem($adapter); $cache      = new SimpleCache(new Flysystem($filesystem));  // 2. 配置日志(可选) $log = new Logger('browscap'); $log->pushHandler(new StreamHandler('php://stdout', Logger::DEBUG));  // 3. 创建 Browscap 实例 $browscap = new Browscap($cache, $log);  $the_user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'; $current_browser = $browscap->getBrowser($the_user_agent);

总结

browscap/browscap-php 库是 PHP 原生 get_browser() 函数的强大替代品,它提供了更准确、更及时的浏览器信息,并且易于安装和配置。通过使用命令行工具,你可以轻松管理浏览器信息库,确保你的应用始终能够准确识别用户浏览器,从而提供更好的用户体验。

以上就是告别过时的get_browser():使用browscap/browscap-php精准识别

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享