HTTP_ACCEPT_LANGUAGE ausfiltern

buzzom

Mitglied
Hallo

wenn ich die Browsersprache ermitteln will mit HTTP_ACCEPT_LANGUAGE spuckt er mir de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 aus.

Wie kann ich nur die ersten beiden Zeichen (also "de") raus filtern, damit ich dies weiter in meinem Code verwenden kann?


Danke
 
Und was wenn dort nicht "de" als erstes drinsteht?

[phpf]substr[/phpf] könnte dir dabei wohl helfen.
 
Ich bin mir gerade nicht ganz sicher, ob es auch Kürzel gibt die aus mehr als zwei Buchstaben bestehen?
Wenn dies der Fall ist, wäre eine Kombination mit strpos ebenfalls sinnvoll.
 
Das Problem ist, dass man via:

PHP:
$client_language = $_SERVER['HTTP_ACCEPT_LANGUAGE'];

bei Firefox 3: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
bei Safari: de-de
bei Opera: de,en;q=0.9,ja;q=0.8,fr;q=0.7,es;q=0.6,it;q=0.5,nl;q=0.4,sv;q=0.3,nb;q=0.2,da;q=0.1,fi;q=0.1,pt;q=0.1,zh-CN;q=0.1,zh-TW;q=0.1,ko;q=0.1,ru;q=0.1

als Ausgabe bekommt. Via:

PHP:
$client_language = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$client_language = substr($client_language, 0, -33);

komme ich zwar bei Firefox 3 auf mein gewünschtes "de", welches ja bei allen Browsern am Anfang steht. Aber substr() streicht ja quasi von hinten die Buchstaben weg, und die sind eben nicht immer, wie man sieht, 33 Buchstaben von hinten bis "de".

Ziel soll es sein, die Browsersprache herauszubekommen, um den Nutzer dann entsprechend weiterzuleiten.

Danke für weisen Rat
 
Zurück