Пользовательский агент, извлечение ОС и браузера из строки - PullRequest
5 голосов
/ 14 марта 2012

Я бы хотел извлечь полное имя ОС и браузер из строки агента пользователя.Как я могу это сделать?

Ответы [ 3 ]

6 голосов
/ 14 марта 2012

Я думаю, что сложно получить полное имя ОС и полное имя браузера, так как многие браузеры идентифицируют себя по-разному. Вам, вероятно, понадобится какое-то необычное регулярное выражение, и тогда оно может даже не работать 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;
}
2 голосов
/ 30 марта 2015

В PHP также есть встроенная функция для достижения этой цели и многое другое: get_browser().

$agent = get_browser();
echo $agent->platform;
echo $agent->parent; // or $agent->browser . $agent->version
2 голосов
/ 15 апреля 2014

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

?>

...