Start · Sprachen · PHP · Referenz · locale_get_keywords

locale_get_keywords

Funktion

Liefert die Schlüsselwörter (Keywords) eines Locale-Bezeichners als assoziatives Array.

seit PHP 5.3.0 Kategorie: string

Signatur

locale_get_keywords(string $locale): array|false|null

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

Typ
array|false|null
Beschreibung
Gibt ein assoziatives Array zurück, das die Schlüsselwörter des Locale enthält (Schlüssel = Keyword-Name, Wert = Keyword-Wert). Enthält das Locale keine Schlüsselwörter, wird 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.';
}
collation => phonebook currency => EUR

Locale ohne Schlüsselwörter – Rückgabe von null

<?php
$locale = 'de_DE';
$keywords = locale_get_keywords($locale);

var_dump($keywords);
NULL

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.';
}
Kollation: standard

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