вторник, 24 ноября 2009 г.

Местоположение посетителя сайта по его ip на русском языке

Как-то делал собственный модуль сбора статистики о посещениях сайта. В какой-то момент потребовалось определить в удобочитаемой форме местоположение посетителя. Базы данных RIPE у меня нет, потому решил воспользоваться одним из сайтов, предоставляющую услугу предоставления информации по ip-адресу. Я извлекаю эту информацию, парсю и в большинстве удачных случаев получаю адрес посетителя. Но на английском языке. Опять же, модуля какого-нибудь транслятора нет. Воспользовался Goggle.Translate. Ему скармливаю адрес на английском, парсю и получаю то, что нужно в достаточно приемлемой форме.



Функции, необходимые для этого, как-то так:


function translate ($text) {
$text = str_replace(' ', '+', $text);
$url = "http://translate.google.ru/translate_t?prev=hp&hl=ru&js=y&text=$text&sl=en&tl=ru";
$str = iconv("KOI8-R", "UTF-8", file_get_contents($url));//Я использую UTF-8...
$tmp = '<div id=result_box dir="ltr">';
$str = substr($str, strpos($str, $tmp) + strlen($tmp));
$str = substr($str, 0, strpos($str, '</div>'));
return $str;
}

function getRIPEString($ip) {
$url = "http://www.db.ripe.net/whois?form_type=simple&full_query_string=&searchtext=$ip&do_search=Search";
return preg_replace("/([\s\x{0}\x{0B}]+)/i", " ", trim(file_get_contents($url)));
}

function defineLocation($RIPEstr = NULL) {
$str = ($RIPEstr)? $RIPEstr : getRIPEString();
$location = substr($str, strpos($str, 'address'));
$location = str_replace("\n", ";",
str_replace('&quot;', '"',
str_replace('address:', '', substr($location, 0, strpos($location, 'phone:') - 1)
)
)
);
return translate(substr($location, 1));
}


© 2009, web-vamg.com