Signatur
Beschreibung
locale_get_region() extrahiert den Regions-Subtag aus einem vollständigen Locale-Bezeichner wie de_DE oder en_US_POSIX. Der Regions-Subtag ist in der Regel ein zweistelliger ISO-3166-1-Ländercode (z. B. DE, US) oder ein dreistelliger UN M.49-Zahlencode (z. B. 419 für Lateinamerika).
Die Funktion ist Teil der Intl-Erweiterung und entspricht der objektorientierten Methode Locale::getRegion(). Sie ist nützlich, wenn man aus einem kombinierten Locale-Bezeichner gezielt nur den geografischen Teil benötigt, beispielsweise um landesspezifische Formatierungsregeln oder Inhalte anzuzeigen.
Enthält der übergebene Locale-Bezeichner keinen Regions-Subtag, gibt die Funktion false zurück. Der Bezeichner wird dabei gemäß dem BCP 47-Standard (IETF-Sprachkennzeichen) analysiert, der sowohl Trennzeichen - als auch _ akzeptiert.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $locale Pflicht | string | Der vollständige Locale-Bezeichner, aus dem der Regions-Subtag extrahiert werden soll, z. B. de_AT, en-US oder zh_Hant_TW. |
Rückgabewert
DE, US), wenn ein solcher im Locale-Bezeichner vorhanden ist. Andernfalls wird false zurückgegeben.Beispiele
Einfache Extraktion des Regionscodes
<?php
$locale = 'de_AT';
$region = locale_get_region($locale);
echo $region; // AT
$locale2 = 'en-US';
echo locale_get_region($locale2); // US
Regions-Subtag bei komplexen Locale-Bezeichnern
<?php
// Chinesisch (Traditionell, Taiwan)
$locale = 'zh_Hant_TW';
echo locale_get_region($locale); // TW
// Kein Regions-Subtag vorhanden
$localeOhneRegion = 'fr';
$result = locale_get_region($localeOhneRegion);
var_dump($result); // bool(false)
// Über OOP-Schnittstelle (äquivalent)
echo Locale::getRegion('pt_BR'); // BR
Anwendungsfall: Länderabhängige Inhalte steuern
<?php
function getCountryContent(string $locale): string {
$region = locale_get_region($locale);
if ($region === false) {
return 'Keine regionsspezifischen Inhalte verfügbar.';
}
// Beispielhafte Zuordnung von Regionen zu Inhalten
$contents = [
'DE' => 'Inhalte für Deutschland',
'AT' => 'Inhalte für Österreich',
'CH' => 'Inhalte für die Schweiz',
];
return $contents[$region] ?? "Keine Inhalte für Region '{$region}' gefunden.";
}
echo getCountryContent('de_DE') . PHP_EOL; // Inhalte für Deutschland
echo getCountryContent('de_AT') . PHP_EOL; // Inhalte für Österreich
echo getCountryContent('de') . PHP_EOL; // Keine regionsspezifischen Inhalte verfügbar.
// Wichtig · Fallstricke
Die Funktion setzt die Intl-Erweiterung voraus, die in PHP 5.3+ standardmäßig verfügbar, aber nicht immer aktiviert ist. Fehlt die Erweiterung, führt der Aufruf zu einem fatalen Fehler. Prüfen Sie ggf. mit extension_loaded('intl').
Der Rückgabewert ist stets in Großbuchstaben normiert (z. B. DE statt de), unabhängig davon, wie der Regions-Subtag im übergebenen Locale-Bezeichner geschrieben wurde.