2016-06-03 3 views
1

다음 코드를 사용하여 사용자 IP의 위치를 ​​확인합니다. 하지만 'US'및 'UK'와 같은 국가가 표시됩니다.IP 국가 확인 및 전체 국가 이름 표시

전체 국가 이름을 표시하려면 어떻게해야합니까? '미국'및 '영국'을 좋아합니까?

CODE: 

<?php 

$ipaddress = $_SERVER['REMOTE_ADDR']; 

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

$details = ip_details($ipaddress); 
echo $details['country']; 

?> 
+0

문제는 무엇인가에 미국을 전송할 수 있습니까? 코드에 오류가 있습니까? – weigreen

+0

@weigreen 아니요, 잘 작동합니다! 표시된 국가 코드를 국가 이름으로 편집하고 싶습니다. 국가가 "미국"으로 표시되고 "미국"처럼 표시하고 싶습니다. –

+0

안녕하세요 헨크. 대신 https://ipdata.co를 사용할 수 있습니다. 우리는 완전한 국가 이름, 통화, 통화 기호 및 전화 코드를 추가 작업없이 API에서 직접 다른 모든 데이터 포인트에 추가 할 수 있습니다. – Jonathan

답변

2

ipinfo의 API를 사용하는 것처럼 보입니다.

짧은 국가 이름 만 제공합니다.

그러나 ipinfo's document은 "country.io"의 데이터를 사용하여 필요를 충족시킬 수 있다고 말했습니다.

그냥 PHP 배열로 변환, 당신은 미국

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

감사! 유일한 문제는이 경우 국가가 영어 국가 이름으로 변환된다는 것입니다. 나는 이것을 우리 자신의 언어로 번역하고 싶다. 가치가 "미국"이라면 "미국"을 말할 수있는 방법이 있습니까? –

+0

그냥 내 대답을 업데이 트하면 '국가 코드로'키'와 언어의 국가 이름으로'가치''$ 코드'에서 데이터를 변경할 수 있습니다. – weigreen