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|falseA função get_browser() aceita dois parâmetros opcionais:
$user_agent: Uma string que especifica o User-Agent a ser analisado. Se omitido (ounull), a função utiliza o User-Agent da requisição atual a partir de$_SERVER['HTTP_USER_AGENT'].$return_array: Um boolean. Setrue, a função retorna um array associativo de propriedades do navegador. Sefalse(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.iniSem 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,$_POSTe os outros arrays embutidos. $_SERVER— leia o cabeçalhoHTTP_USER_AGENTbruto diretamente.preg_match()— crie seu próprio analisador de User-Agent com expressões regulares.