【问题标题】:User agent, extract OS and browser from string用户代理,从字符串中提取操作系统和浏览器
【发布时间】:2012-03-30 10:00:35
【问题描述】:

我想从用户代理字符串中提取完整的操作系统名称和浏览器。我该怎么做?

【问题讨论】:

标签: php browser operating-system user-agent


【解决方案1】:

PHP 中还有一个内置函数可以实现这一点以及更多功能:get_browser()

$agent = get_browser();
echo $agent->platform;
echo $agent->parent; // or $agent->browser . $agent->version

【讨论】:

    【解决方案2】:

    @augustknight:注意,IE11 不发送“MSIE”令牌,我建议将匹配项添加到 Trident 令牌。

    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;
    }
    

    ?>

    【讨论】:

      【解决方案3】:

      我认为获取完整的操作系统名称和完整的浏览器名称很棘手,因为许多浏览器以不同的方式标识自己。您可能需要一些花哨的正则表达式,然后它甚至可能无法 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;
      }
      

      【讨论】:

        猜你喜欢
        • 2012-11-28
        • 1970-01-01
        • 1970-01-01
        • 2021-01-08
        • 1970-01-01
        • 1970-01-01
        • 2010-11-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多