Signatur
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
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;
}
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;
}
// 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.