Как получить код страны и код валюты по IP-адресу?


Я новичок в zend Framework. И я хочу получить код валюты, код страны по ip-адресу.

Могу ли я получить какой-либо пример URL-адреса?.

Пожалуйста, помогите мне...

Заранее благодарю.

Author: Johan, 2011-04-21

9 answers

Вы можете воспользоваться моей услугой, http://ipinfo.io API для получения кода страны:

function get_country($ip) {
    return file_get_contents("http://ipinfo.io/{$ip}/country");
}

echo get_country("8.8.8.8"); // => US

Если вас интересуют другие детали, вы могли бы сделать более общую функцию:

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

$details = ip_details("8.8.8.8");

echo $details->city;     // => Mountain View
echo $details->country;  // => US
echo $details->org;      // => AS15169 Google Inc.
echo $details->hostname; // => google-public-dns-a.google.com

В этих примерах я использовал IP 8.8.8.8, но если вам нужны подробные сведения об IP-адресе пользователя, просто введите вместо этого $_SERVER['REMOTE_ADDR']. Более подробная информация доступна по адресу http://ipinfo.io/developers

Вы можете получить сопоставление кодов стран с кодами валют из http://country.io/data / и добавьте это в свой код. Вот простой пример:

function getCurrenyCode($country_code) {
    $currency_codes = array(
        'GB' => 'GBP',
        'FR' => 'EUR',
        'DE' => 'EUR',
        'IT' => 'EUR',
    );

    if(isset($currency_codes[$country_code])) {
        return $curreny_codes[$country_code];
    }

    return 'USD'; // Default to USD
}
 9
Author: Ben Dowling, 2016-04-06 05:03:14

Большое-большое спасибо джматаи , Мультяшный моряк , ExperimentX за ценный совет.

Но у меня есть простое решение

 public function getCountryIp()
{
    $currency = new Zend_Currency();
    $countryCode = $this->getCountryFromIP();
    $currencyCode = $currency->getCurrencyList($countryCode);
    $localCurrency = $this->currency('USD',$currencyCode[0],50);
    $var['currencyCode'] = $currencyCode[0];
    $var['currency'] = $localCurrency;
    return $var;
}



//use to convert currency



public function currency($from_Currency, $to_Currency, $amount)
 {
        $amount = urlencode($amount);
        $from_Currency = urlencode($from_Currency);
        $to_Currency = urlencode($to_Currency);
        $url = "http://www.google.com/ig/calculator?hl=en&q=$amount$from_Currency=?$to_Currency";
        $ch = curl_init();
        $timeout = 0;
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
        $rawdata = curl_exec($ch);
        curl_close($ch);
        $data = explode('"', $rawdata);
        $data = explode(' ', $data['3']);
        $stripped = ereg_replace("[^A-Za-z0-9.\+]", "", $data['0']);//remove special char
        return round($stripped,3);
//        $var = $data['0'];
//        return $var;
//        return round($var, 8);
    }

 //get ip-address and show country code


 public function getCountryFromIP()
 {
     $ip = $_SERVER['REMOTE_ADDR'];

    $country = exec("whois $ip  | grep -i country"); // Run a local whois and get the result back
    //$country = strtolower($country); // Make all text lower case so we can use str_replace happily
    // Clean up the results as some whois results come back with odd results, this should cater for most issues
    $country = str_replace("country:", "", "$country");
    $country = str_replace("Country:", "", "$country");
    $country = str_replace("Country :", "", "$country");
    $country = str_replace("country :", "", "$country");
    $country = str_replace("network:country-code:", "", "$country");
    $country = str_replace("network:Country-Code:", "", "$country");
    $country = str_replace("Network:Country-Code:", "", "$country");
    $country = str_replace("network:organization-", "", "$country");
    $country = str_replace("network:organization-usa", "us", "$country");
    $country = str_replace("network:country-code;i:us", "us", "$country");
    $country = str_replace("eu#countryisreallysomewhereinafricanregion", "af", "$country");
    $country = str_replace("", "", "$country");
    $country = str_replace("countryunderunadministration", "", "$country");
    $country = str_replace(" ", "", "$country");

    return $country;
 }
 5
Author: Manoj, 2011-04-23 06:15:56

Для этого вы должны иметь возможность использовать базу данных MaxMind.

Http://www.maxmind.com/app/country

 2
Author: jmathai, 2011-04-21 08:17:40

Получите подробный код страны, валюту, конвертер валют, символ валюты и т. Д. От http://www.geoplugin.net/json.gp?ip ="ip-адрес здесь"

enter image description here

 2
Author: Md. Zubaer Ahammed, 2017-02-04 17:32:55

Пример, основанный на ipdata.co , который дает вам символ валюты и код непосредственно с IP-адреса.

В этом ответе используется "тестовый" ключ API, который очень ограничен и предназначен только для тестирования нескольких вызовов. Зарегистрируйтесь для получения собственного бесплатного ключа API и ежедневно получайте до 1500 запросов на разработку.

API также имеет 10 глобальных конечных точек, каждая из которых способна обрабатывать >10 000 вызовов в секунду!

$ip = '78.8.53.5';
$details = json_decode(file_get_contents("https://api.ipdata.co/{$ip}?api-key=test"));
echo $details->country_name;
//Poland
echo $details->city;
//Głogów
echo $details->currency;
// PLN
echo $details->currency_symbol;
// zł

Отказ от ответственности

Я создал эта услуга.

 2
Author: Jonathan, 2018-08-29 14:02:04

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

 1
Author: Ian Wood, 2011-04-21 08:17:49

Возможно, это тоже должно помочь http://api.ip2.cc.nyud.net/?api=cname&ip=112.197.167.19

Также есть отличный вопрос Хороший php API для извлечения кода страны из IP? возможно, вы можете создать плагин для извлечения кода страны и кода валюты в zend framework.

 1
Author: Santosh Linkha, 2017-05-23 10:31:13
(new Zend_Currency(null, 'GB'))->getShortName();

Возвращает string 'GBP'.

 0
Author: umpirsky, 2014-02-13 11:55:29

Вы можете использовать https://ip-api.io для этой задачи легко.

 0
Author: Andrey E, 2017-08-06 20:47:02