Start · Sprachen · PHP · Referenz · locale_get_region

locale_get_region

Funktion

Liefert den Regions-Subtag (Länder- oder Regionscode) aus einem Locale-Bezeichner als Zeichenkette.

seit PHP 5.3.0 Kategorie: string

Signatur

locale_get_region(string $locale): string|false

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

Typ
string|false
Beschreibung
Gibt den Regions-Subtag als Zeichenkette zurück (z. B. 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
AT 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
TW bool(false) 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.
Inhalte für Deutschland Inhalte für Österreich 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.