Как использовать ipinfodb для поиска только кода страны

Я хочу найти код страны посетителя моего сайта с помощью API ipinfodb.

Когда я пытаюсь выполнить следующее, http://api.ipinfodb.com/v3/ip-country/?key=<My_API_Key>&ip=<Some_IP>, это дает следующий результат:

OK;;<Some_IP>;US;UNITED STATES

Как отфильтровать этот вывод, чтобы отображался только код страны?

С уважением, Тимоти

РЕДАКТИРОВАТЬ:

В ответ Чарльзу,

После поиска в Google я узнал, что 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?

Спасибо


person Timothy Black    schedule 13.12.2012    source источник
comment
Спасибо за ответ. Я получил желаемый результат с аргументом XML. Но как я могу получить его без дополнительного аргумента? (Новый код был добавлен в мой пост)   -  person Timothy Black    schedule 15.12.2012
comment
Это проще, когда вы пишете XML, который получаете от API. Тогда мы сможем вам помочь. С вашим примером сверху мы не можем запустить ваш вызов API.   -  person René Höhle    schedule 15.12.2012


Ответы (2)


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

Вы можете просмотреть остальные функции для работы со строками, чтобы узнать, есть ли у вас какие-либо другие интересные вещи. пропущенный.

person Charles    schedule 15.12.2012

Приведенный выше ответ не особенно полезен, потому что вывод сервера является статическим, только если вы каждый раз явно указываете один и тот же IP-адрес. Если вы жестко запрограммируете запрос местоположения для определенного IP-адреса, он будет каждый раз одним и тем же. В чем смысл?

Сделайте это вместо

  • Установите класс PHP для их API. Класс PHP
  • Поэкспериментируйте с примером PHP, найденным здесь; сохраните его как собственную веб-страницу и наблюдайте за результатами. Назовем его «userlocation.php». Обратите внимание, что поля будут пустыми, если вы загружаете с локального хоста.

Хорошо, трюк для разбора этого вывода — это array_values(). Мне потребовалась целая вечность, чтобы понять это, но в конце концов я наткнулся на это.

So...

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

Какой бы элемент вам ни понадобился, вы можете получить его таким образом — и это динамично. Код вернет любую страну, относящуюся к IP-адресу пользователя.

Последнее замечание. Позаботьтесь о том, чтобы вставить ключ API в файл класса, а не в userlocation.php. Переменные файла класса защищены, и это хорошо.

Во всяком случае, я не эксперт; просто подумал, что я поделюсь тем, что я узнал.

person Pax Per Scientiam    schedule 01.02.2015