Detectando Browser com PHP

by @emersonbroga. 3 Comments

E aí galera,
Hoje precisei de um modo de detectar o browser e sua versão, pesquisei e achei uma função muito simples que resolve esse problema.
Como sempre o vilão da história é o “Internet Explorer 6″, então para solucionar o problema que tinha com o IE6 foi mamata.

<?php
    /* function getBrowser
     * returns the detected browser
     */
    function getBrowser()
    {
        $var = $_SERVER['HTTP_USER_AGENT'];
        $info['browser'] = "OTHER";

        // valid brosers array
        $browser = array ("MSIE", "OPERA", "FIREFOX", "MOZILLA",
                          "NETSCAPE", "SAFARI", "LYNX", "KONQUEROR");

        // bots = ignore
        $bots = array('GOOGLEBOT', 'MSNBOT', 'SLURP');

        foreach ($bots as $bot)
        {
            // if bot, returns OTHER
            if (strpos(strtoupper($var), $bot) !== FALSE)
            {
                return $info;
            }
        }

        // loop the valid browsers
        foreach ($browser as $parent)
        {
            $s = strpos(strtoupper($var), $parent);
            $f = $s + strlen($parent);
            $version = substr($var, $f, 5);
            $version = preg_replace('/[^0-9,.]/','',$version);
            if (strpos(strtoupper($var), $parent) !== FALSE)
            {
                $info['browser'] = $parent;
                $info['version'] = $version;
                return $info;
            }
        }
        return $info;
    }

    // prints the detected browser
    print_r(getBrowser());
?>

é isso aí …só isso.
[ratings]
Abraços.

  • João Paulo

    Muito bom.
    Como eu converto ele pra uma variavel?
    Array ( [browser] => FIREFOX [version] => 3.6. )
    Para apenas FIREFOX 3.6

    Obrigado

  • admin

    Joao Paulo, basta você concatenar os valores do array!
    Ex:
    $array = getBrowser();
    $variavel = $array['browser'] . $array['version'];
    print_r($variavel);

    Obrigado.

  • Tapegado

    Coicidencia no nome? Emerson?