W3docs

get_browser()

La función get_browser() en PHP obtiene información sobre el navegador del usuario según el encabezado HTTP User-Agent enviado por el cliente.

Función PHP get_browser()

La función get_browser() en PHP se utiliza para obtener información sobre el navegador del usuario, que se determina a partir del encabezado HTTP User-Agent enviado por el navegador del cliente al servidor.

Sintaxis

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

La función get_browser() acepta dos parámetros opcionales:

  • $user_agent: Un string que especifica el User-Agent a analizar. Si se omite (o es null), la función utiliza el User-Agent de la solicitud actual desde $_SERVER['HTTP_USER_AGENT'].
  • $return_array: Un boolean. Si es true, la función devuelve un array asociativo de propiedades del navegador. Si es false (el valor predeterminado), devuelve un object con los mismos datos como propiedades.

Valor de retorno: un object o array de capacidades, o false en caso de error.

Requisito previo: browscap.ini

get_browser() no detecta nada por sí misma — busca el User-Agent en una base de datos de capacidades del navegador llamada browscap.ini. Debes descargar ese archivo e indicarlo en php.ini con la directiva browscap:

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

Sin esta directiva configurada, la función devuelve false y emite una advertencia. Dado que la tabla de búsqueda es grande y debe procesarse, llamar a get_browser() conlleva una sobrecarga notable — esta es la razón principal por la que las aplicaciones modernas la evitan.

Devolver un array

Pasa true como segundo argumento para obtener un array asociativo. Esta es la forma más sencilla de iterar o inspeccionar con print_r():

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

Un resultado típico (resumido) para una solicitud de Chrome en escritorio tiene este aspecto:

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
    ...
)

Las claves comunes incluyen browser, version, majorver, minorver, platform, parent, cookies, javascript, frames, iframes, tables, y la expresión regular usada para la coincidencia, browser_name_pattern. Las capacidades de tipo boolean se devuelven como las cadenas "1" (verdadero) o "0"/vacío (falso).

Devolver un object (predeterminado)

Cuando omites el segundo argumento, obtienes un object y puedes leer las capacidades como propiedades:

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

Construir un mensaje legible

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

Esto genera algo como You are using Chrome version 120.0 on Win10., basado en el encabezado User-Agent de la solicitud de respuesta HTTP.

Analizar un User-Agent específico

No es necesario depender de la solicitud actual — puedes pasar cualquier string User-Agent directamente, lo cual resulta práctico para pruebas o análisis de registros:

<?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
?>

Protegerse ante fallos

Dado que la función devuelve false cuando browscap no está configurado, comprueba siempre el resultado antes de leer las propiedades:

<?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'];
}
?>

Conclusión

La función get_browser() es una herramienta útil para obtener información sobre el navegador del usuario en PHP, que puede emplearse para optimizar la experiencia del usuario o con fines de depuración. Es importante tener en cuenta que la función depende del encabezado User-Agent enviado por el navegador, el cual puede ser manipulado por el usuario o por un actor malicioso. Por ello, la información devuelta por la función debe considerarse potencialmente no fiable y no debe utilizarse con fines de seguridad. Además, debido a la sobrecarga de rendimiento y al requisito de un archivo browscap.ini externo, las aplicaciones modernas suelen preferir analizar el encabezado User-Agent directamente o usar bibliotecas especializadas.

Funciones relacionadas

  • PHP Superglobals$_SERVER, $_GET, $_POST y los demás arrays integrados.
  • $_SERVER — lee el encabezado HTTP_USER_AGENT directamente.
  • preg_match() — implementa tu propio análisis de User-Agent con expresiones regulares.

Práctica

Práctica
¿Cuál es la función de get_browser() en PHP?
¿Cuál es la función de get_browser() en PHP?
Was this page helpful?