Kann ich nun den einzigen Wert bzw. den vor dem ersten Komma nehmen?
Nein - es ist nicht zwangsläufig so, dass jene werte mit Hoher Priorität auch vorne stehen.
Oder gibt's auch sowas:
ru;q=0.8,es;q=0.9,de;q=1.0
Ja.
aber auch de;q=0,en=q=0.5 wäre möglich - in diesem Fall gilt en, weil alles > 0 gültig ist.
oder andere Versionen?
Ja, auch Leerzeichen nach den Kommas sind z.B. erlaubt.
Mein PHP-Zweizeiler:
$arr_lg = explode( ',', $_SERVER['HTTP_ACCEPT_LANGUAGE'] ); // ru,en;q=0.9,es;q=0.8,de;q=0.7
if ( $arr_lg[0] ) echo $arr_lg[0];
Funzt nicht, da dir die Quality verloren geht
Du hättest dann
ru
en;q=0.9
es;q=0.8
de;q=0.7
Jetzt musst du dafür sorgen, dass du ein key=>value-Paar mit Sprache und Quality hast (Reihenfolge nicht verändern):
ru=>
en=>0.9
es=>0.8
de=>0.7
Jetzt musst du erst rausfinden, welche quality "ru" hat (bzw. alle, die keinen Wert haben) - damit musst du dich durchs Array hangeln und beim nächsten Eintrag nachsehen, ob da eine vorhanden ist - wenn ja, nimmst du diese, wenn nein schaust du bei der übernächsten nach usw bis du einen findest oder am Ende des Arrays bist - wenn alle keine Quality haben.
ru=>0.9
en=>0.9
es=>0.8
de=>0.7
Jetzt nimmst du die verfügbaren Sprachen deiner Seite - z.B de und en - und wirfst aus dem gelieferten Array alles Raus, was dem sowieso nicht entspricht
en=>0.9
de=>0.7
Jetzt nimmst du jenen Eintrag mit der höchsten Priorität, bei gleicher Priorität jenen der zuerst aufscheint - alternativ nimmst du den, der in deiner Priorität der verfügbaren Sprachen zuerst aufscheint.