2017-09-22 11 views
0

私はここでユーザーが国にIPを取得するために私が見つけた機能を持っています。それだけでabrevを示しています私はabrevと同様に全国を表示したい国番号を国名にマッピングするPHP

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

$IPaddress = 'get ip here'; 

$details = ip_details("$IPaddress"); 

echo $details->region; 
echo $details->country; 

次に私はこれを好きなところにエコーします。

<?php echo $details->country;?> 

は、だから私はそれをダウンロードするとマップが、私はJSONファイルが、私は完全な国名をエコーすることができるよう、必要なときにそれをマッピングする方法がわからないをダウンロードしている私に語っIpInfo Site

に行ってきました

+0

あなたが ''ますprint_r($詳細)を共有することができますか? –

+0

リンクは一番上にあります。私は情報をエコーアウトする方法を示します – Codi

+0

国フィールドには省略記号のみが含まれています。完全な名前は含まれていません。 –

答えて

1

このスニペットは、JSONから必要と思われる出力を取得します。

これで満足すれば、スクリプトの値にハードコードされたIPアドレスを代用することができます。

$countries = json_decode(file_get_contents('http://country.io/names.json')); 
$details = json_decode(file_get_contents("http://ipinfo.io/8.8.8.8")); 
$code = $details->country; 
echo "Country Name: ".$countries->$code."<br/>"; 
echo "Country Code: ".$code."<br/>"; 
echo "Region: ".$details->region."<br/>"; 
echo "City: ".$details->city."<br/>"; 

この出力:

Country Name: United States 
Country Code: US 
Region: California 
City: Mountain View 
+0

@コーディこれを試してみてください。これはあなたが探しているものです。 –

+1

私が必要としていただけで – Codi

+0

@Codi問題なし、幸せを助ける – ADyson

-1

PHPのjson_decode関数を使用してJSONデータを配列に変換する必要があります。

例:あなたは国コードから国名を取得するための関数の下に使用することができます

$country_json = file_get_contents('http://country.io/names.json'); 
$country_array = json_decode($country_json, TRUE); // TRUE turns the result into an associative array 

echo $country_array[$details->country]; 
+1

を使用して結果を共有してください "PHPのjson_decode関数を使用する必要があります"。 OPのコードはすでにあります。あなたのバージョンでは、配列をオブジェクトの代わりに配列に変換するだけです。これは、おそらくオブジェクトよりも役に立たないでしょう。私はそれが問題の根源だとは思わない。 – ADyson

+0

OPのコードがユーザーIPの詳細を取得しています。彼はそれを国のJSONリストにマップしたいと考えています。彼の質問はJSONデータを使用可能にする方法に関するものだったので、彼のコードサンプルがどこか別の場所から来ていて、完全に理解していない場合には 'json_decode'をインクルードすると思っていました。 – neuromatter

+0

しかし、彼らはまったくその機能を使用していないような言葉遣いです。そして、私はまだオブジェクトスタイルの出力が綺麗だと言っていますが、それはただの意見です。 – ADyson

1

:改良として

function getCountryName($code) { 
    $json = file_get_contents("http://country.io/names.json"); 
    $countries = json_decode($json, TRUE); 

    return array_key_exists($code,$countries) ? $countries[$code] : false; 
} 

は、あなたがhttp://country.io/names.json JSONファイルをダウンロードし、代わりにそれをここに参照することができますそれを毎回遠隔に呼び出すこと。

+0

"改善のため、http://country.io/names.json jsonファイルをダウンロードして、毎回リモートで呼び出すのではなく、ここで参照することができます。ファイルを維持管理する人によってファイルが変更された場合、それは改善されません。それは、国が自分の名前を変えたり、存在しなくなったり、時々起こるようなものを作ったりするときに – ADyson

+0

@PSJ私が必要とするものをダウンロードしました。次の国のフルネーム国コード米国の地域と都市上記をエコーし​​ましたが、空白 – Codi

2

JSONから国コードを取得して、コード内にPHP配列を作成して、クイックルックアップを作成します。

$countryCodes = ['BD'=>'Bangladesh', ...]; 

if (array_key_exists($details->country, $countryCodes) { 
    $country = $countryCodes[$details->country]; 
} 
関連する問題