告別過(guò)時(shí)的get_browser():使用browscap/browscap-php精準(zhǔn)識(shí)別瀏覽器信息

php 提供的 get_browser() 函數(shù),相信很多開(kāi)發(fā)者都用過(guò)。但是,它依賴于一個(gè) browscap.ini 文件,這個(gè)文件需要定期更新,否則識(shí)別的瀏覽器信息就會(huì)不準(zhǔn)確。而且,原生的 get_browser() 函數(shù)在某些服務(wù)器環(huán)境下配置比較麻煩。那么,有沒(méi)有更好的替代方案呢?

composer在線學(xué)習(xí)地址:學(xué)習(xí)地址

browscap/browscap-php 庫(kù)就是為此而生的。它是一個(gè)用戶級(jí)的 get_browser() 函數(shù)替代方案,由 Browser Capabilities Project 官方支持。這意味著你可以獲得更準(zhǔn)確、更及時(shí)的瀏覽器信息。

安裝和基本使用

首先,你需要使用 composer 安裝這個(gè)庫(kù):

composer require browscap/browscap-php

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

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

<?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. 創(chuàng)建 Browscap 實(shí)例 $browscap = new Browscap($cache, $log);  // 4. 獲取瀏覽器信息 $browser = $browscap->getBrowser();  // 現(xiàn)在 $browser 包含了當(dāng)前用戶代理的詳細(xì)信息 print_r($browser);

推薦的設(shè)置

在使用之前,你需要下載 browscap.ini 文件,并將其轉(zhuǎn)換為緩存。有兩種方法:

a. 分步下載和轉(zhuǎn)換

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

這種方式會(huì)將下載的文件存儲(chǔ)在本地,但不會(huì)檢查遠(yuǎn)程文件是否已更改。如果你的緩存損壞,只需重新運(yùn)行 convert 命令即可。

b. 一步下載和轉(zhuǎn)換

vendor/bin/browscap-php browscap:update

這種方式不會(huì)存儲(chǔ)本地文件,但會(huì)檢查遠(yuǎn)程文件是否已更改。如果你的緩存損壞,需要清除緩存并重新開(kāi)始。

建議設(shè)置一個(gè)獨(dú)立的 cron job 定期調(diào)用 browscap:update 命令,以自動(dòng)更新緩存。

命令行工具

browscap/browscap-php 提供了豐富的命令行工具,方便你管理瀏覽器信息庫(kù):

  • browscap:check-update: 檢查是否有新的 browscap.ini 版本可用。
  • browscap:fetch: 從 browscap.org 下載 browscap.ini 文件。
  • browscap:convert: 將本地存儲(chǔ)的 browscap.ini 文件轉(zhuǎn)換為緩存。
  • browscap:update: 下載 browscap.ini 文件并寫(xiě)入緩存(一步完成)。
  • browscap:parse: 解析給定的 User Agent,并將結(jié)果輸出到控制臺(tái)。

使用示例

  • 從 $_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. 創(chuàng)建 Browscap 實(shí)例 $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. 創(chuàng)建 Browscap 實(shí)例 $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);

總結(jié)

browscap/browscap-php 庫(kù)是 PHP 原生 get_browser() 函數(shù)的強(qiáng)大替代品,它提供了更準(zhǔn)確、更及時(shí)的瀏覽器信息,并且易于安裝和配置。通過(guò)使用命令行工具,你可以輕松管理瀏覽器信息庫(kù),確保你的應(yīng)用始終能夠準(zhǔn)確識(shí)別用戶瀏覽器,從而提供更好的用戶體驗(yàn)。

以上就是告別過(guò)時(shí)的get_browser():使用browscap/browscap-php精準(zhǔn)識(shí)別

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊14 分享