Определение страны по IP на PHP



Получать информацию по IP мы будем с этого сайта.

function getCountryByIp($ipAddress)
{
	$ipDetail=array();
	$f = file_get_contents("http://api.hostip.info/?ip=".$ipAddress);

	//Получаем название города
	preg_match("@<Hostip>(\s)*<gml:name>(.*?)</gml:name>@si", $f, $city);
	$ipDetail['city'] = $city[2]; 

	//Получаем название страны
	preg_match("@<countryName>(.*?)</countryName>@si", $f, $country);
	$ipDetail['country'] = $country[1];

	//Получаем код страны
	preg_match("@<countryAbbrev>(.*?)</countryAbbrev>@si", $f, $countryCode);
	$ipDetail['countryCode'] = $countryCode[1];

	return $ipDetail;
}

Я думаю код в объяснениях не нуждается. Функция будет возвращать такой массив:

Array ( [city] => cityName [country] => countryName [country_code] => Code )

Теперь посмотрим работу функции getCountryByIp() в деле.

$ipDetail = getCountryByIp('195.114.140.105');
echo "Страна: ".$ipDetail['country']."<br />";
echo "Город: ".$ipDetail['city']."<br />";
echo "Код страны: ".$ipDetail['countryCode']."<br />";

По использованному выше будет следующая информация:

Страна: FRANCE
Город: Nice
Код страны: FR



Теги: ,

Комментарии

  1. Супер! На редкость понятная статья. За 2 минуты настроил у себя на сервере. Респект автору. Всё понятно и чётко

    Reply

  2. Евгений

    А вот с российскими IP проблема на этом сервисе – не определяют. «… actually we haven’t a clue.»

    Reply

  3. У меня вот что определяет: 66.249.66.233 – (Private A * не определ * XX *
    , т.е. ничего. И так по всем ip
    , google и yandex не исключение. Что не так…

    Reply

  4. Челябинск UTEL к сожалению не определил

    Reply

Оставить комментарий