Start · Sprachen · PHP · Referenz · geoip_region_name_by_code

geoip_region_name_by_code

Funktion

Gibt den vollständigen Regionsnamen zu einem Ländercode und einem Regionscode zurück.

Kategorie: misc

Signatur

geoip_region_name_by_code(string $country_code, string $region_code): string

Beschreibung

geoip_region_name_by_code() ist eine Funktion der PECL-Erweiterung geoip und ermöglicht es, zu einem zweistelligen ISO-3166-Ländercode (z. B. DE, US) und einem zugehörigen Regionscode den menschenlesbaren Regionsnamen zu ermitteln. Dabei sind die Regionscodes je nach Land unterschiedlich kodiert: Für die USA und Kanada werden zweistellige FIPS-10-4- bzw. ISO-3166-2-Codes verwendet (z. B. CA für Kalifornien), während andere Länder numerische oder alphanumerische Codes nutzen.

Die Funktion wird typischerweise zusammen mit geoip_record_by_name() oder geoip_region_by_name() eingesetzt, die Länder- und Regionscode einer IP-Adresse zurückliefern. Die Rückgabe beider Funktionen lässt sich direkt als Argumente an geoip_region_name_by_code() übergeben, um lesbare Ortsinformationen zu erhalten.

Die Funktion setzt eine installierte und konfigurierte GeoIP-Datenbank voraus. Ohne die PECL-Erweiterung geoip steht sie nicht zur Verfügung. Alternativ kann für moderne Projekte die Bibliothek MaxMind GeoIP2 verwendet werden, die eine aktiv gepflegte API bietet.

Parameter

Name Typ Default Beschreibung
$country_code Pflicht string Zweistelliger ISO-3166-Ländercode (z. B. DE, US, FR).
$region_code Pflicht string Regionscode passend zum Ländercode, wie er z. B. von geoip_region_by_name() zurückgegeben wird (z. B. CA für Kalifornien bei US).

Rückgabewert

Typ
string
Beschreibung
Gibt den Regionsnamen als Zeichenkette zurück (z. B. California). Wird kein passender Eintrag gefunden oder sind die Codes ungültig, gibt die Funktion einen leeren String zurück.

Beispiele

Regionsnamen für US-Bundesstaat ermitteln

<?php
// Regionsnamen für Kalifornien (US) abrufen
$countryCode = 'US';
$regionCode  = 'CA';

$regionName = geoip_region_name_by_code($countryCode, $regionCode);

if ($regionName !== '') {
    echo "Region: " . $regionName . PHP_EOL;
} else {
    echo "Kein Regionsname gefunden." . PHP_EOL;
}
Region: California

Kombination mit geoip_region_by_name

<?php
// IP-Adresse geografisch auflösen und Regionsnamen ermitteln
$ip = '128.101.101.101';

$geoData = geoip_region_by_name($ip);

if ($geoData) {
    $countryCode = $geoData['country_code'];
    $regionCode  = $geoData['region'];

    $regionName = geoip_region_name_by_code($countryCode, $regionCode);

    echo "Land: "   . $countryCode . PHP_EOL;
    echo "Region: " . ($regionName !== '' ? $regionName : 'Unbekannt') . PHP_EOL;
} else {
    echo "Keine GeoIP-Daten verfügbar." . PHP_EOL;
}
Land: US Region: Minnesota

// Wichtig · Fallstricke

Deprecation/Pflege: Die PECL-Erweiterung geoip wird nicht mehr aktiv gepflegt und die zugrundeliegenden GeoIP-Lite-Datenbanken von MaxMind im alten Format werden nicht mehr aktualisiert. Für neue Projekte empfiehlt sich die Verwendung der MaxMind GeoIP2 PHP API mit aktuellen Datenbanken im MMDB-Format.

Regionscodes sind nicht universell normiert: Für die USA und Kanada entsprechen sie den bekannten Postabkürzungen, für andere Länder gelten abweichende Schemata. Ein Regionscode, der für ein Land gültig ist, kann für ein anderes Land keine Bedeutung haben oder einen anderen Regionsnamen liefern.