Достаточно часто требуется с входящего IP адреса клиента определить страну на лету.
Это требуется как для финансовых так и для простых новостных сервисов или порталов.
Самих сервисов IP2Country достаточно много, также в сети имеются базы данных стран и их диапазоны IP адресов.
Ниже представлена функция парсинга одного из сервисов. На вход поступает IP, на выходе английское наименование страны:
public function ipToCountry($ip) { if (!preg_match("/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/",$ip)) exit('Входящие данные не соответсвуют требованиям, операция отменена'); ini_set('user_agent', 'Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20100101 Firefox/6.0'); $html = @file_get_contents("http://ip2geolocation.com/?ip=".$ip); if ($html){ $html = iconv ("windows-1251","utf-8",$html); $pos = strpos($html, 'Страна'); $html = substr($html, $pos); $pos = strpos($html, '">'); $html = substr($html, 0, $pos); $html = str_replace("Страна: ","",$html); $html = str_replace(",","",$html); // убираем лишние строки при помощи разделения слов по пробелам // нужно чтобы не попадалось в ответ слова типа Russian Federation,Region:Ufa и тд. $text = explode(" ",$html); if ($text[0]=="Russian" || $text[0]=="United" ){ $html=$text[0]." ".$text[1]; // Россия т.к великая держава состоит из 2 слов ну или там US или UK } else $html=$text[0]; return trim($html); } else{ return "unknown"; } }