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

WBOY
发布: 2025-06-21 15:20:03
原创
270人浏览过

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

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

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

安装和基本使用

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

<code class="bash">composer require browscap/browscap-php</code>
登录后复制

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

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

<code class="php"><?php

require_once 'vendor/autoload.php';

use BrowscapPHP\Browscap;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use MatthiasMullie\Scrapbook\Psr16\SimpleCache;
use MatthiasMullie\Scrapbook\Adapters\Flysystem;
use League\Flysystem\Filesystem;
use League\Flysystem\Local\LocalFilesystemAdapter;

// 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);</code>
登录后复制

推荐的设置

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

a. 分步下载和转换

<code class="bash">vendor/bin/browscap-php browscap:fetch
vendor/bin/browscap-php browscap:convert</code>
登录后复制

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

b. 一步下载和转换

AI TransPDF
AI TransPDF

高效准确地将PDF文档翻译成多种语言的AI智能PDF文档翻译工具

AI TransPDF 231
查看详情 AI TransPDF
<code class="bash">vendor/bin/browscap-php browscap:update</code>
登录后复制

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

建议设置一个独立的 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:

    <code class="php"><?php
    
    require_once 'vendor/autoload.php';
    
    use BrowscapPHP\Browscap;
    use Monolog\Logger;
    use Monolog\Handler\StreamHandler;
    use MatthiasMullie\Scrapbook\Psr16\SimpleCache;
    use MatthiasMullie\Scrapbook\Adapters\Flysystem;
    use League\Flysystem\Filesystem;
    use League\Flysystem\Local\LocalFilesystemAdapter;
    
    // 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']);</code>
    登录后复制
  • 使用指定的 User Agent:

    <code class="php"><?php
    
    require_once 'vendor/autoload.php';
    
    use BrowscapPHP\Browscap;
    use Monolog\Logger;
    use Monolog\Handler\StreamHandler;
    use MatthiasMullie\Scrapbook\Psr16\SimpleCache;
    use MatthiasMullie\Scrapbook\Adapters\Flysystem;
    use League\Flysystem\Filesystem;
    use League\Flysystem\Local\LocalFilesystemAdapter;
    
    // 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);</code>
    登录后复制

总结

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

以上就是告别过时的get_browser():使用browscap/browscap-php精准识别浏览器信息的详细内容,更多请关注php中文网其它相关文章!

相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号