2017-09-22 2 views
0

나는 여기에 사용자가 국가에 대한 정보를 얻을 수있는 기능을 가지고 있습니다. 하지만 그것은 단지 내가 이런 식으로 원하는 내가 전체 국가를 표시 할 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; 

그때 내가 메아리 abrev을 보여줍니다.

<?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

@ 코디 아무런 도움도 행복하지 않다. – 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 나는 내가 필요로하는 것을 다운로드했다. 다음 국가 이름이다. 국가 코드 미국 지역 및 도시 blank – Codi

2

나는 JSON에서 국가 코드를 가져 와서 빠른 검색을 위해 코드에 PHP 배열을 만들 것이다.

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

if (array_key_exists($details->country, $countryCodes) { 
    $country = $countryCodes[$details->country]; 
} 
관련 문제