.

PHP скрипты — PR ТИЦ индекс ...

Файл с исходниками — скачать

Кому нужна еще и Alexa Rank — есть готовый класс, можно ознакомиться на Блоге Разработчика

<?
//echo getGoogleIdx ($site).'<br/>';
//echo getYandexIdx ($site).'<br/>';
//echo getYaCat ($site).'<br/>';
//echo getDMOZ ($site).'<br/>';
//echo getPR ($site).'<br/>';
//echo getTIC ($site).'<br/>';

function getFBFeedUrl ($site) // возвращает урл фида в фидбурнере например для blog.gtalex.ru это http://feed.feedburner.com/GtalexBlog

{
if (!($buf = file_get_contents («http://$site»)))  return -1;

if (preg_match ('!href\=\"(http\:\/\/feeds\d*\.feedburner\.com\/.*?)\"!', $buf, $match)) {
return ($match[1]);
} else {
return (-1);
}
}

function getFBReadersCnt ($fbname) // возвращает количество подписчиков по заданному фиду
{
$sResp = get_buf ('https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri='.$fbname);

preg_match ('/circulation="(\d+)"/', $sResp, $a);

//Если была ошибка, то вернется 0, иначе все будет ок.
return (int)@$a[1];
}

function getYaRankRead ($site) //win1251 // возвращает массив из 2х чисел — Рейтинг и Кол-во читателей по версии Яндекс — Блоги
{
$buf = file_get_contents («http://blogs.yandex.ru/top/?username=$site»);

preg_match ('!</table></div>.*?(\d+)</div></td>\n<td><div class="int">(\d+)</div></td>\n</tr>!ism',$buf,$match);

$rank = $reader = 0;

if (!empty ($match[1])) {
$reader = $match[2];
}

if (!empty ($match[1])) {
$rank = $match[1];
}
return (array ($rank,$reader));
}

function getDMOZ ($site) //utf-8   — Наличие сайта в каталоге DMOZ
{
// http://search.dmoz.org/cgi-bin/search?search=u:ngs.ru
$buf = file_get_contents ('http://search.dmoz.org/cgi-bin/search?search=u:'.$site);
//    results found
if (preg_match ('!results\sfound!ism',$buf)) {
return (0);
} else {
return (1);
}
}

function getYaCat ($site) //utf-8  Наличие сайта в каталоге Яндекса
{
// http://search.yaca.yandex.ru/yandsearch?text=url%3D%22blog.gtalex.ru*%22&rpt=rs2
$buf = utf8win1251 (file_get_contents ('http://search.yaca.yandex.ru/yandsearch?text=url%3D%22'.$site.'*%22&rpt=rs2'));
// нигде не встречается
if (preg_match ('!нигде\sне\sвстречается!ism',$buf)) {
return (0);
} else {
return (1);
}
}

function getGoogleIdx ($site) //utf-8  Количество страниц в индексе Гугла
{
//    http://www.google.com/search?hl=en&q=site:blog.gtalex.ru
$buf = file_get_contents ('http://www.google.com/search?hl=en&q=site:'.$site);
//    of about <b>1,210,000</b> from
if (preg_match ('!of\sabout\s<b>(.*?)</b>\sfrom!ism',$buf,$match)) {
return (str_replace (',','',$match[1]));
} else {
return (0);
}
}

function getYandexIdx ($site)  // utf-8 Количество страниц в индексе Яши
{
//    http://yandex.ru/yandsearch?text=&site=ngs.ru&ras=1&site_manually=true
$buf = utf8win1251 (file_get_contents ('http://yandex.ru/yandsearch?text=&site='.$site.'&ras=1&site_manually=true'));
//    нашлось 384&nbsp;тыс. страниц
//      нашлось 182 страницы
if (preg_match ('!нашлось\s (\d+)\sстраниц!ism',$buf,$match)) {
return ($match[1]);
}
if (preg_match ('!нашлось\s (\d+)\&nbsp\;тыс\.\sстраниц!ism',$buf,$match)) {
return (1000*$match[1]);
}
return (0);
}

function getTIC ($site)  // ТИЦ
{
$url = 'http://'.$site;
$str=file ('http://bar-navig.yandex.ru/u?ver=2&show=32&url='.$url);
if ($str==false) {
$ans=false;
} else {
$is_find=preg_match («/value=\»(.\d*)\"/", join ("",$str), $tic);

if ($is_find<1) {
$ans=0;
} else {
$ans=$tic[1];
}
}
return $ans;
}

define ('GMAG', 0xE6359A60);  // доп. константа для PR
function nooverflow ($a)  // доп. функция для PR
{
while ($a<-2147483648)
$a+=2147483648+2147483648;
while ($a>2147483647)
$a-=2147483648+2147483648;
return $a;
}

function zeroFill ($x, $bits)   // доп. функция для PR
{
if ($bits==0) return $x;
if ($bits==32) return 0;
$y = ($x & 0x7FFFFFFF) >> $bits;
if (0×80000000 & $x) {
$y |= (1<<(31-$bits));
}
return $y;
}

function mix ($a,$b,$c) {    // доп. функция для PR
$a=(int)$a; $b=(int)$b; $c=(int)$c;
$a -= $b; $a -= $c; $a=nooverflow ($a); $a ^= (zeroFill ($c,13));
$b -= $c; $b -= $a; $b=nooverflow ($b); $b ^= ($a<<8);
$c -= $a; $c -= $b; $c=nooverflow ($c); $c ^= (zeroFill ($b,13));
$a -= $b; $a -= $c; $a=nooverflow ($a); $a ^= (zeroFill ($c,12));
$b -= $c; $b -= $a; $b=nooverflow ($b); $b ^= ($a<<16);
$c -= $a; $c -= $b; $c=nooverflow ($c); $c ^= (zeroFill ($b,5));
$a -= $b; $a -= $c; $a=nooverflow ($a); $a ^= (zeroFill ($c,3));
$b -= $c; $b -= $a; $b=nooverflow ($b); $b ^= ($a<<10);
$c -= $a; $c -= $b; $c=nooverflow ($c); $c ^= (zeroFill ($b,15));
return array ($a,$b,$c);
}

function GCH ($url, $length=null, $init=GMAG) {    // доп. функция для PR
if (is_null ($length)) {
$length = sizeof ($url);
}
$a = $b = 0x9E3779B9;
$c = $init;
$k = 0;
$len = $length;
while ($len >= 12) {
$a += ($url[$k+0] +($url[$k+1]<<8) +($url[$k+2]<<16) +($url[$k+3]<<24));
$b += ($url[$k+4] +($url[$k+5]<<8) +($url[$k+6]<<16) +($url[$k+7]<<24));
$c += ($url[$k+8] +($url[$k+9]<<8) +($url[$k+10]<<16)+($url[$k+11]<<24));
$mix = mix ($a,$b,$c);
$a = $mix[0]; $b = $mix[1]; $c = $mix[2];
$k += 12;
$len -= 12;
}
$c += $length;
switch ($len) {
case 11: $c+=($url[$k+10]<<24);
case 10: $c+=($url[$k+9]<<16);
case 9 : $c+=($url[$k+8]<<8);
case 8 : $b+=($url[$k+7]<<24);
case 7 : $b+=($url[$k+6]<<16);
case 6 : $b+=($url[$k+5]<<8);
case 5 : $b+=($url[$k+4]);
case 4 : $a+=($url[$k+3]<<24);
case 3 : $a+=($url[$k+2]<<16);
case 2 : $a+=($url[$k+1]<<8);
case 1 : $a+=($url[$k+0]);
}
$mix = mix ($a,$b,$c);
return $mix[2];
}

function strord ($string)    // доп. функция для PR
{
for ($i=0;$i<strlen ($string);$i++) {
$result[$i] = ord ($string{$i});
}
return $result;
}

function getPR ($aUrl)    // Непосредственно вычисление PageRank
{
$aUrl = 'http://'.$aUrl;
$url = 'info:'.$aUrl;
$ch = GCH (strord ($url));
$url='info:'.urlencode ($aUrl);
$pr = @file («http://www.google.com/search?client=navclient-auto&ch=6$ch&ie=UTF-8&oe=UTF-8&features=Rank&q=$url»);
$pr_str = @implode ("«, $pr);
return substr ($pr_str,strrpos ($pr_str, „:“)+1);
}

function utf8win1251 ($s)  // Доп.функция по переводу кодировки из  utf  в win1251
{
$out=»«;$c1=»";$byte2=false;
for ($c=0;$c<strlen ($s);$c++) {
$i=ord ($s[$c]);
if ($i<=127) $out.=$s[$c];
if ($byte2) {
$new_c2=($c1&3)*64+($i&63);
$new_c1=($c1>>2)&5;
$new_i=$new_c1*256+$new_c2;
if ($new_i==1025) $out_i=168; else
if ($new_i==1105) $out_i=184; else $out_i=$new_i-848;
$out.=chr ($out_i);
$byte2=false;
}
if (($i>>5)==6) {
$c1=$i;
$byte2=true;
}
}
return $out;
}

function get_buf ($link)
{
$ch = curl_init ($link);
curl_setopt ($ch, CURLOPT_URL, $link);
curl_setopt ($ch, CURLOPT_USERAGENT, «Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)»);
curl_setopt ($ch, CURLOPT_HEADER, 1);
//    curl_setopt ($ch, CURLOPT_FAILONERROR, 1);
curl_setopt ($ch, CURLOPT_TIMEOUT, 30);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$buf = curl_exec ($ch);
curl_close ($ch);
return ($buf);
}
?>

Яндекс.Метрика