До недавнего времени для определения ТИЦ парсил страницу bar-navig.yandex.ru. Но теперь данный адрес отказывается выдавать информацию о сайтах не присутствующих в Яндекс.Каталоге. Даже не знаю как это объяснить, наверное снова их заморочки.
Как известно есть еще один адресок который дай бог выдает такую инфу. Вот собственно и он search.yaca.yandex.ru. Правда первый был более удобнее, так как выдавал только лиш цифры и информацию о том в какой категории находитса тот или иной сайт, что в свою очередь довольно сильно облегчает парсинг и снижает нагрузку и ненужный трафик.
Но куда в наше время деваться? Будем парсить что есть. В этом посте хочу привести очень полезную функцию для определение ТИЦа. А вы уже сами решите куда её использовать
Собственно она:
-
function yandex($url){
-
global $set;
-
$file=file_get_contents("http://search.yaca.yandex.ru/yca/cy/ch/$url/");
-
$file=iconv("UTF-8", "windows-1251", $file);
-
///echo $file;
-
//Определение ТИЦ
-
$tica=preg_match("!ресурса меньше (.*?).!si",$file,$ok);
-
$tic=$ok[1];
-
if (trim($tic)=='10') $tic='0';
-
if ( trim($tic)!='0' )
-
{
-
$tica=preg_match("!ресурса — (.*?)!si",$file,$ok);
-
$tic=$ok[1];
-
}
-
if ( trim($tic)=='' )
-
{
-
$file=file_get_contents("http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://$url");
-
//Определение ТИЦ
-
$tica=preg_match("!value=\"(.*?)\"!si",$file,$ok);
-
$tic=$ok[1];
-
}
-
return $tic;
-
}
Расскажу по порядку. Во первых парсим мы нужный адресок, и обязательно меняем кодировку. Возможно на вашем сервере этого не понадобитса, но если не будет определятся, убираем коммент echo $file; для отладки. Видем каракули? Убираем функцию iconv : )
Первое что мы проверяем, есть ли вообще ТИЦ у проекта. Далее ветвление определяем, стоит ли узнавать точное значение, если переменная равна 0 то не стоит : ) Ну и если первым способом определить не выходит, используем второй.
Вот и все. Конечно функция довольно грузанутая, но результат стоит этого.