Signatur
Beschreibung
locale_parse() analysiert einen Locale-Bezeichner (z. B. de_DE_Latn_AT) und zerlegt ihn in seine einzelnen Bestandteile gemäß dem IETF BCP 47-Standard. Das Ergebnis ist ein assoziatives Array, dessen Schlüssel den jeweiligen Subtag-Typen entsprechen.
Mögliche Schlüssel im Rückgabe-Array sind: language (Sprachcode, z. B. de), script (Schriftsystem, z. B. Latn), region (Ländercode, z. B. AT), variant (Variante), grandfathered, private sowie extlang. Private Subtags erscheinen als nummerierte Schlüssel wie private0, private1 usw.
Die Funktion ist besonders nützlich, wenn einzelne Bestandteile einer Locale-ID ausgewertet oder verglichen werden sollen, etwa um Sprache und Region getrennt zu verarbeiten oder um Locale-IDs zu validieren und zu transformieren.
Sie ist die prozedurale Entsprechung der Methode Locale::parseLocale() aus der Intl-Erweiterung und setzt daher die aktivierte intl-Extension voraus.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $locale Pflicht | string | Die zu parsende Locale-ID als Zeichenkette, z. B. de_DE, zh_Hant_TW oder en-US-x-private. Groß-/Kleinschreibung wird dabei ignoriert. |
Rückgabewert
false zurückgegeben.Beispiele
Einfache Locale-ID zerlegen
<?php
$subtags = locale_parse('de_DE');
print_r($subtags);
Komplexe Locale-ID mit Script und Region
<?php
$subtags = locale_parse('zh_Hant_TW');
print_r($subtags);
Einzelnen Subtag aus Locale-ID extrahieren
<?php
$locale = 'de_Latn_AT_POSIX';
$subtags = locale_parse($locale);
if ($subtags !== false) {
echo 'Sprache: ' . ($subtags['language'] ?? 'unbekannt') . PHP_EOL;
echo 'Schrift: ' . ($subtags['script'] ?? 'unbekannt') . PHP_EOL;
echo 'Region: ' . ($subtags['region'] ?? 'unbekannt') . PHP_EOL;
echo 'Variante: ' . ($subtags['variant0'] ?? 'unbekannt') . PHP_EOL;
}
Ungültige Locale-ID behandeln
<?php
$result = locale_parse('');
var_dump($result);
// Wichtig · Fallstricke
Die Funktion benötigt die PHP-Erweiterung intl. Ist diese nicht installiert oder aktiviert, wird ein fataler Fehler ausgelöst. Stelle sicher, dass extension=intl in der php.ini aktiviert ist.
Private Subtags (nach dem Trennzeichen x-) werden als private0, private1 usw. im Array abgelegt. Ebenso werden mehrere Varianten als variant0, variant1 nummeriert.
Die Funktion ist die prozedurale Variante von Locale::parseLocale() — beide sind funktional identisch und können je nach Codestil bevorzugt werden.