W3docs

get_browser()

Die Funktion get_browser() in PHP liefert Informationen über den Browser des Nutzers anhand des HTTP-User-Agent-Headers.

PHP-Funktion get_browser()

Die Funktion get_browser() in PHP wird verwendet, um Informationen über den Browser des Nutzers zu ermitteln. Diese Informationen werden anhand des HTTP-User-Agent-Headers bestimmt, den der Browser des Clients an den Server sendet.

Syntax

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

Die Funktion get_browser() akzeptiert zwei optionale Parameter:

  • $user_agent: Ein string, der den zu parsenden User-Agent angibt. Wird er weggelassen (oder als null übergeben), verwendet die Funktion den User-Agent der aktuellen Anfrage aus $_SERVER['HTTP_USER_AGENT'].
  • $return_array: Ein boolean. Bei true gibt die Funktion ein assoziatives array der Browser-Eigenschaften zurück. Bei false (Standard) wird ein object mit denselben Daten als Eigenschaften zurückgegeben.

Rückgabewert: ein object oder array mit Fähigkeiten oder false bei einem Fehler.

Voraussetzung: browscap.ini

get_browser() erkennt nichts eigenständig – es sucht den User-Agent in einer Browser-Capabilities-Datenbank namens browscap.ini. Diese Datei muss heruntergeladen und in der php.ini mit der Direktive browscap eingetragen werden:

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

Ohne diese Direktive gibt die Funktion false zurück und löst eine Warnung aus. Da die Nachschlagetabelle groß ist und geparst werden muss, verursacht der Aufruf von get_browser() spürbaren Overhead – das ist der Hauptgrund, warum moderne Anwendungen darauf verzichten.

Rückgabe als array

Übergeben Sie true als zweites Argument, um ein assoziatives array zu erhalten. Diese Form lässt sich am einfachsten mit einer Schleife durchlaufen oder mit print_r() prüfen:

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

Ein typisches (gekürztes) Ergebnis für eine Desktop-Chrome-Anfrage sieht so aus:

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

Häufige Schlüssel sind browser, version, majorver, minorver, platform, parent, cookies, javascript, frames, iframes, tables sowie der für den Abgleich verwendete reguläre Ausdruck browser_name_pattern. Boolean-artige Fähigkeiten werden als Zeichenketten "1" (wahr) oder "0"/leer (falsch) zurückgegeben.

Rückgabe als object (Standard)

Wenn Sie das zweite Argument weglassen, erhalten Sie ein object und lesen die Fähigkeiten als Eigenschaften aus:

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

Eine lesbare Ausgabe erstellen

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

Dies gibt z. B. You are using Chrome version 120.0 on Win10. aus, basierend auf dem User-Agent-Header der HTTP-Antwort.

Einen bestimmten User-Agent parsen

Sie müssen sich nicht auf die aktuelle Anfrage verlassen – übergeben Sie einen beliebigen User-Agent-string selbst, was sich für Tests oder die Log-Analyse eignet:

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

Fehler abfangen

Da die Funktion false zurückgibt, wenn browscap nicht konfiguriert ist, sollte vor dem Zugriff auf Eigenschaften immer eine Prüfung erfolgen:

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

Fazit

Die Funktion get_browser() ist ein nützliches Werkzeug, um in PHP Informationen über den Browser des Nutzers abzurufen. Diese Informationen können genutzt werden, um die Nutzererfahrung zu optimieren oder bei der Fehlersuche zu helfen. Wichtig ist dabei, dass die Funktion auf dem vom Browser gesendeten User-Agent-Header basiert, der vom Nutzer oder einem böswilligen Akteur manipuliert werden kann. Die zurückgegebenen Informationen sollten daher als potenziell unzuverlässig betrachtet und nicht für Sicherheitszwecke verwendet werden. Darüber hinaus bevorzugen moderne Anwendungen aufgrund des Performance-Overheads und der Abhängigkeit von einer externen browscap.ini-Datei häufig das direkte Parsen des User-Agent-Headers oder den Einsatz dedizierter Bibliotheken.

Verwandte Funktionen

  • PHP Superglobals$_SERVER, $_GET, $_POST und die anderen eingebauten Arrays.
  • $_SERVER — liest den rohen HTTP_USER_AGENT-Header direkt aus.
  • preg_match() — eigenes User-Agent-Parsing mit regulären Ausdrücken umsetzen.

Practice

Übung
Was ist die Funktion von get_browser() in PHP?
Was ist die Funktion von get_browser() in PHP?
Was this page helpful?