Php 用户代理,从字符串中提取操作系统和浏览器

Php 用户代理,从字符串中提取操作系统和浏览器,php,browser,operating-system,user-agent,Php,Browser,Operating System,User Agent,我想从用户代理字符串中提取操作系统的完整名称和浏览器。我如何才能做到这一点?我认为获取完整的操作系统名称和完整的浏览器名称很难,因为许多浏览器识别自己的方式不同。您可能需要一些花哨的正则表达式,然后它可能无法100%的工作 下面是我用来识别浏览器的简单方法。你可以根据自己的需要调整它 <?php public static function getUserAgent() { static $agent = null; if ( empty($agent) ) {

我想从用户代理字符串中提取操作系统的完整名称和浏览器。我如何才能做到这一点?

我认为获取完整的操作系统名称和完整的浏览器名称很难,因为许多浏览器识别自己的方式不同。您可能需要一些花哨的正则表达式,然后它可能无法100%的工作

下面是我用来识别浏览器的简单方法。你可以根据自己的需要调整它

<?php

public static function getUserAgent()
{
    static $agent = null;

    if ( empty($agent) ) {
        $agent = $_SERVER['HTTP_USER_AGENT'];

        if ( stripos($agent, 'Firefox') !== false ) {
            $agent = 'firefox';
        } elseif ( stripos($agent, 'MSIE') !== false ) {
            $agent = 'ie';
        } elseif ( stripos($agent, 'iPad') !== false ) {
            $agent = 'ipad';
        } elseif ( stripos($agent, 'Android') !== false ) {
            $agent = 'android';
        } elseif ( stripos($agent, 'Chrome') !== false ) {
            $agent = 'chrome';
        } elseif ( stripos($agent, 'Safari') !== false ) {
            $agent = 'safari';
        } elseif ( stripos($agent, 'AIR') !== false ) {
            $agent = 'air';
        } elseif ( stripos($agent, 'Fluid') !== false ) {
            $agent = 'fluid';
        }

    }

    return $agent;
}

@augustknight:注意,IE11不发送“MSIE”令牌,我建议在三叉戟令牌中添加一个匹配项

IE 11用户代理示例:

Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
更改代码:

<?php
public static function getUserAgent()
{
    static $agent = null;

    if ( empty($agent) ) {
        $agent = $_SERVER['HTTP_USER_AGENT'];

        if ( stripos($agent, 'Firefox') !== false ) {
            $agent = 'firefox';
        } elseif ( stripos($agent, 'MSIE') !== false ) {
            $agent = 'ie';
        } elseif ( stripos($agent, 'Trident') !== false ) {
            $agent = 'ie';
        } elseif ( stripos($agent, 'iPad') !== false ) {
            $agent = 'ipad';
        } elseif ( stripos($agent, 'Android') !== false ) {
            $agent = 'android';
        } elseif ( stripos($agent, 'Chrome') !== false ) {
            $agent = 'chrome';
        } elseif ( stripos($agent, 'Safari') !== false ) {
            $agent = 'safari';
        } elseif ( stripos($agent, 'AIR') !== false ) {
            $agent = 'air';
        } elseif ( stripos($agent, 'Fluid') !== false ) {
            $agent = 'fluid';
        }

    }

    return $agent;
}

PHP中还有一个内置函数来实现此功能和其他功能:


我建议你考虑做些类似的事情来实现这一点
$agent = get_browser();
echo $agent->platform;
echo $agent->parent; // or $agent->browser . $agent->version