2012-12-13 2 views
0

ipinfodb API를 사용하여 내 사이트 방문자의 국가 코드를 찾고 싶습니다. 그것은 단지 국가 코드를 표시되도록ipinfodb를 사용하여 국가 코드 만 찾는 방법

OK;;<Some_IP>;US;UNITED STATES 

가 어떻게이 출력을 필터링 할 : 나는 다음, http://api.ipinfodb.com/v3/ip-country/?key=<My_API_Key>&ip=<Some_IP>을하려고 할 때

, 그것은 다음과 같은 출력을 제공합니다?

감사합니다, 디모데

편집 : API가 있도록 'XML과 같은 형식의 속성'을들 수있다

가 구글에서 검색 후 내가 알게

찰스 응답에서

, 다음 작품들.

$xml = simplexml_load_file('http://api.ipinfodb.com/v3/ip-country/?key=<My_API>&format=xml&ip=<Some_IP>); 

echo $xml->countryCode; 

XML 인수없이 동일한 출력을 얻으려면 어떻게해야합니까?

감사에만 국가 코드를 보여줍니다 그래서이 출력을 필터링하려면 어떻게

+0

답장을 보내 주셔서 감사합니다. 나는 XML 인자로 원하는 출력을 얻었다. 하지만 추가 인수없이 어떻게 얻을 수 있습니까? (새 코드가 내 게시물에 추가되었습니다.) –

+0

API에서 가져온 XML을 작성할 때 편리합니다. 그럼 우린 당신을 도울 수 있어요. 위에서 예제를 통해 API 호출을 실행할 수 없습니다. – Stony

답변

0
OK;;<Some_IP>;US;UNITED STATES 

?

은 나는 호기심이 SimpleXML을 호출 할 수있을 것입니다 찾을 수 있지만, 주어진 구분자에, 배열로의 분할을하는 캐릭터 라인을 돌려 것이다, explode 생각하지 않았다. 이 경우, 우리는 ; 폭발해야합니다

$string_data = 'OK;;127.0.0.1;US;UNITED STATES'; 
$sploded_data = explode(';', $string_data); 
print_r($sploded_data); 
echo "\nCountry code: ", $sploded_data[3], "\n"; 

이 방출해야

Array 
(
    [0] => OK 
    [1] => 
    [2] => 127.0.0.1 
    [3] => US 
    [4] => UNITED STATES 
) 
Country code: US 

당신은 당신이 가질 수있는 다른 흥미로운 일을이 있는지 확인하기 위해 string manipulation functions의 나머지 부분을 확인하실 수 있습니다 놓쳤다.

0

매번 동일한 IP 주소를 명시 적으로 지정하면 서버 출력이 정적이기 때문에 위의 대답은 특히 도움이되지 않습니다. 특정 IP 주소에 대한 위치 요청을 하드 코드하면 매번 동일하게 진행됩니다. 점은 무엇인가?

대신

  • 자신의 API를위한 PHP 클래스를 설치이 작업을 수행합니다. PHP Class
  • PHP 샘플을 가지고 놀아 라. here; 자체 웹 페이지로 저장하고 결과를 관찰하십시오. "userlocation.php"라고 부르 자. localhost에서로드하면 필드는 null이됩니다.

좋아,이 출력을 구문 분석하는 트릭은 array_values ​​()입니다. 이걸 영원히 생각해 봤지만 결국 우연히 만났습니다. this. 그래서

... 당신이, 당신이이 방법으로 얻을 수있는 필요 무엇이든 요소

$locations = array_values($locations); 
echo $locations[n],"<br />\n"; 
echo $locations[n+1],"<br />\n"; 
etc. 

- 그것은 동적입니다.코드는 사용자의 IP 주소와 관련된 모든 국가를 반환합니다.

마지막주의 사항. API 키를 userlocation.php가 아니라 클래스 파일에 붙여 넣으세요. 클래스 파일 변수는 보호되어있어 좋은 점입니다.

어쨌든, 나는 전문가가 아닙니다. 그냥 내가 배운 것을 나눌 것이라고 생각했습니다.