Signatur
Beschreibung
locale_get_keywords() analysiert einen Locale-Bezeichner und extrahiert daraus die enthaltenen Schlüsselwörter (auch Keywords genannt). Schlüsselwörter sind optionale Zusatzangaben in einem Locale-String, die durch ein @-Zeichen eingeleitet werden, z. B. de_DE@collation=phonebook;currency=EUR. Die Funktion gibt diese als assoziatives Array zurück, wobei der Schlüssel der Keyword-Name und der Wert der zugehörige Keyword-Wert ist.
Typische Einsatzgebiete sind die Analyse und Verarbeitung von Locale-Bezeichnern, wie sie von Betriebssystemen, HTTP-Accept-Language-Headern oder internationalen Bibliotheken geliefert werden. So lässt sich prüfen, ob ein Locale spezifische Sortier- (collation) oder Währungsregeln (currency) enthält.
Die Funktion ist die prozedurale Variante der Methode Locale::getKeywords() aus der intl-Erweiterung. Sie steht daher nur zur Verfügung, wenn die PHP-Erweiterung intl installiert und aktiviert ist.
Enthält der Locale-Bezeichner keine Schlüsselwörter, gibt die Funktion null zurück. Bei einem ungültigen Locale-Bezeichner wird false zurückgegeben.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $locale Pflicht | string | Der zu analysierende Locale-Bezeichner, z. B. de_DE@collation=phonebook;currency=EUR. Schlüsselwörter werden nach dem @-Zeichen durch Semikolons getrennt als Schlüssel=Wert-Paare angegeben. |
Rückgabewert
null zurückgegeben. Bei einem ungültigen Locale-Bezeichner wird false zurückgegeben.Beispiele
Schlüsselwörter aus einem Locale-Bezeichner extrahieren
<?php
$locale = 'de_DE@collation=phonebook;currency=EUR';
$keywords = locale_get_keywords($locale);
if ($keywords !== null && $keywords !== false) {
foreach ($keywords as $key => $value) {
echo $key . ' => ' . $value . PHP_EOL;
}
} else {
echo 'Keine Schlüsselwörter gefunden oder ungültiges Locale.';
}
Locale ohne Schlüsselwörter – Rückgabe von null
<?php
$locale = 'de_DE';
$keywords = locale_get_keywords($locale);
var_dump($keywords);
Prüfen, ob ein bestimmtes Keyword gesetzt ist
<?php
$locale = 'en_US@collation=standard;numbers=latn';
$keywords = locale_get_keywords($locale);
if (is_array($keywords) && isset($keywords['collation'])) {
echo 'Kollation: ' . $keywords['collation'];
} else {
echo 'Kein Kollations-Keyword vorhanden.';
}
// Wichtig · Fallstricke
Voraussetzung: Die Funktion erfordert die PHP-Erweiterung intl. Ist diese nicht installiert, führt der Aufruf zu einem fatalen Fehler. Die Verfügbarkeit kann mit extension_loaded('intl') geprüft werden.
Rückgabe beachten: Da die Funktion sowohl null (kein Keyword vorhanden) als auch false (ungültiges Locale) zurückgeben kann, sollte der Rückgabewert mit is_array() geprüft werden, bevor darauf zugegriffen wird.
Objektorientierte Alternative: Dieselbe Funktionalität ist über Locale::getKeywords($locale) verfügbar, was in objektorientierten Projekten bevorzugt werden sollte.