Файл с исходниками — скачать
Кому нужна еще и 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 тыс. страниц
// нашлось 182 страницы
if (preg_match(‘!нашлось\s(\d+)\sстраниц!ism’,$buf,$match)) {
return($match[1]);
}
if (preg_match(‘!нашлось\s(\d+)\ \;тыс\.\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 (0x80000000 & $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);
}
?>
5 комментариев на «“PHP скрипты — PR ТИЦ индекс …”»
Не работает скрипт, скиньте файл с рабочим скриптом на емеил.
А то при копипасте он ошибки выдает.
echo getDMOZ(«http://hackua.com»);
echo getYaCat(«http://hackua.com»);
Я передаю переметры таким образом, почему оно выводит 0 или 1 ? — думаю стоило бы дописать скрипт что бы при 0 говорил что нету в Dmoz например, при 1 Есть в DMOZ.
в зависимости 1 или 0 думаю не трудно самому написать «Есть» или «Присутствует» или как душенька пожелает.
Самое обсуждаемое на блогах:
1 июня — День защиты детей
Самолет пропал над Атлантикой
Премия "MTV Movie Awards"
Тиц на склейку проверяется?