2016-06-03 23 views
1

Ich verwende den folgenden Code, um den Standort der Benutzer-IP zu überprüfen. Aber das zeigt das Land wie "US" und "UK".Überprüfen Sie das IP-Land und zeigen Sie den vollständigen Ländernamen an.

Wie kann ich dies lösen, um den vollständigen Ländernamen anzuzeigen? Wie "Vereinigte Staaten" und "Vereinigtes Königreich"?

+0

Was ist Ihr Problem? Haben Sie einen Fehlercode? – weigreen

+0

@weigreen Nein, es funktioniert gut! Ich möchte nur die angezeigten Ländercodes in Ländernamen bearbeiten. Land wird jetzt als "US" angezeigt und ich möchte es wie "United States" anzeigen lassen. –

+0

Hallo Henk, du könntest https://ipdata.co stattdessen verwenden, wir liefern den vollständigen Ländernamen, die Währung, das Währungssymbol und den Anrufcode in Zusätzlich zu allen anderen Datenpunkten direkt von der API, ohne zusätzliche Arbeit. – Jonathan

Antwort

2

Es sieht aus wie Sie ipinfo API verwenden.

Sie erhalten nur einen kurzen Ländernamen.

Jedoch, ipinfo's document sagte, dass Sie "country.io" Daten verwenden können, um Ihre Notwendigkeit zu erreichen.

konvertieren Sie es einfach in PHP-Array, und Sie können USA USA übertragen

<?php 

$ipaddress = $_SERVER['REMOTE_ADDR']; 

$code = ["US" => "United States", "GB" => "United Kingdom"]; 

function ip_details($ip) { 
    $json = file_get_contents("http://ipinfo.io/{$ip}/json"); 
    $details = json_decode($json, true); 
    return $details; 
} 

$details = ip_details($ipaddress); 
if(array_key_exists($details['country'], $code)){ 
    $details['country'] = $code[$details['country']]; 
} 
echo $details['country']; 

?> 
+0

Danke! Das einzige Problem ist, dass in diesem Fall die Länder in englische Ländernamen umgewandelt werden. Ich möchte das in unsere eigene Sprache übersetzen. Gibt es eine Möglichkeit zu sagen, ob der Wert "US" "Amerika" ist? –

+0

Aktualisieren Sie einfach meine Antwort, Sie können die Daten in '$ code' ändern, die' key' als Ländercode und 'value' als Landesnamen Ihrer Sprache. – weigreen