W3docs

get_browser()

A função get_browser() em PHP obtém informações sobre o navegador do usuário com base no cabeçalho HTTP User-Agent enviado pelo cliente.

Função PHP get_browser()

A função get_browser() em PHP é utilizada para obter informações sobre o navegador do usuário, determinadas com base no cabeçalho HTTP User-Agent enviado pelo navegador do cliente ao servidor.

Sintaxe

get_browser(?string $user_agent = null, bool $return_array = false): object|array|false

A função get_browser() aceita dois parâmetros opcionais:

  • $user_agent: Uma string que especifica o User-Agent a ser analisado. Se omitido (ou null), a função utiliza o User-Agent da requisição atual a partir de $_SERVER['HTTP_USER_AGENT'].
  • $return_array: Um boolean. Se true, a função retorna um array associativo de propriedades do navegador. Se false (o padrão), retorna um object com os mesmos dados como propriedades.

Valor de retorno: um object ou array de capacidades, ou false em caso de falha.

Pré-requisito: browscap.ini

get_browser() não detecta nada por conta própria — ela consulta o User-Agent em um banco de dados de capacidades do navegador chamado browscap.ini. Você deve baixar esse arquivo e apontá-lo no php.ini com a diretiva browscap:

; in php.ini
browscap = /path/to/browscap.ini

Sem essa diretiva configurada, a função retorna false e emite um aviso. Como a tabela de consulta é grande e precisa ser analisada, chamar get_browser() gera uma sobrecarga perceptível — este é o principal motivo pelo qual aplicações modernas a evitam.

Retornando um array

Passe true como segundo argumento para obter um array associativo. Esta é a forma mais fácil de iterar ou inspecionar com print_r():

<?php
$browser = get_browser(null, true);
print_r($browser);
?>

Um resultado típico (resumido) para uma requisição do Chrome em desktop tem esta aparência:

Array
(
    [browser_name_pattern] => *mozilla/5.0 (*windows nt 10.0*) applewebkit*chrome*
    [parent]    => Chrome 120.0
    [platform]  => Win10
    [browser]   => Chrome
    [version]   => 120.0
    [majorver]  => 120
    [minorver]  => 0
    [cookies]   => 1
    [javascript] => 1
    [frames]    => 1
    ...
)

As chaves comuns incluem browser, version, majorver, minorver, platform, parent, cookies, javascript, frames, iframes, tables e a regex usada para correspondência, browser_name_pattern. Capacidades no estilo boolean são retornadas como as strings "1" (verdadeiro) ou "0"/vazio (falso).

Retornando um object (padrão)

Quando você omite o segundo argumento, obtém um object e lê as capacidades como propriedades:

<?php
$browser = get_browser();
echo "Browser: {$browser->browser}\n";
echo "Version: {$browser->version}\n";
echo "Platform: {$browser->platform}\n";
?>

Construindo uma mensagem legível

<?php
$browser = get_browser(null, true);
echo "You are using " . $browser['browser']
   . " version " . $browser['version']
   . " on " . $browser['platform'] . ".";
?>

Isso gera algo como You are using Chrome version 120.0 on Win10., baseado no cabeçalho User-Agent da resposta HTTP.

Analisando um User-Agent específico

Você não precisa depender da requisição atual — passe qualquer string User-Agent diretamente, o que é útil para testes ou análise de logs:

<?php
$ua = "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15";
$browser = get_browser($ua, true);
echo $browser['platform'];   // e.g. iOS
?>

Protegendo-se contra falhas

Como a função retorna false quando browscap não está configurado, sempre verifique antes de ler as propriedades:

<?php
$browser = get_browser(null, true);

if ($browser === false) {
    // Fall back to the raw header
    echo $_SERVER['HTTP_USER_AGENT'] ?? 'Unknown browser';
} else {
    echo $browser['browser'] . ' ' . $browser['version'];
}
?>

Conclusão

A função get_browser() é uma ferramenta útil para obter informações sobre o navegador do usuário em PHP, podendo ser utilizada para otimizar a experiência do usuário ou para fins de depuração. É importante observar que a função depende do cabeçalho User-Agent enviado pelo navegador, que pode ser manipulado pelo usuário ou por um agente malicioso. Portanto, as informações retornadas pela função devem ser tratadas como potencialmente não confiáveis e não devem ser usadas para fins de segurança. Além disso, devido à sobrecarga de desempenho e ao requisito de um arquivo externo browscap.ini, as aplicações modernas frequentemente preferem analisar o cabeçalho User-Agent diretamente ou usar bibliotecas dedicadas.

Funções relacionadas

  • PHP Superglobals$_SERVER, $_GET, $_POST e os outros arrays embutidos.
  • $_SERVER — leia o cabeçalho HTTP_USER_AGENT bruto diretamente.
  • preg_match() — crie seu próprio analisador de User-Agent com expressões regulares.

Prática

Prática
Qual é a função de get_browser() em PHP?
Qual é a função de get_browser() em PHP?
Was this page helpful?