<?php
class functions {
function to_int_32 (&$x) {
$z = hexdec(80000000);
$y = (int) $x;
if($y ==- $z && $x <- $z){
$y = (int) ((-1) * $x);
$y = (-1) * $y;
}
$x = $y;
}
function zero_fill ($a, $b) {
$z = hexdec(80000000);
if ($z & $a) {
$a = ($a >> 1);
$a &= (~$z);
$a |= 0x40000000;
$a = ($a >> ($b - 1));
} else {
$a = ($a >> $b);
}
return $a;
}
function mix($a, $b, $c) {
$a -= $b; $a -= $c; $this->to_int_32($a); $a = (int)($a ^ ($this->zero_fill($c,13)));
$b -= $c; $b -= $a; $this->to_int_32($b); $b = (int)($b ^ ($a<<8));
$c -= $a; $c -= $b; $this->to_int_32($c); $c = (int)($c ^ ($this->zero_fill($b,13)));
$a -= $b; $a -= $c; $this->to_int_32($a); $a = (int)($a ^ ($this->zero_fill($c,12)));
$b -= $c; $b -= $a; $this->to_int_32($b); $b = (int)($b ^ ($a<<16));
$c -= $a; $c -= $b; $this->to_int_32($c); $c = (int)($c ^ ($this->zero_fill($b,5)));
$a -= $b; $a -= $c; $this->to_int_32($a); $a = (int)($a ^ ($this->zero_fill($c,3)));
$b -= $c; $b -= $a; $this->to_int_32($b); $b = (int)($b ^ ($a<<10));
$c -= $a; $c -= $b; $this->to_int_32($c); $c = (int)($c ^ ($this->zero_fill($b,15)));
return array($a,$b,$c);
}
function checksum ($url, $length = null, $init = 0xE6359A60) {
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 = $this->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 = $this->mix($a, $b, $c);
return $mix[2];
}
function strord($string) {
for($i = 0; $i < strlen($string); $i++) {
$result[$i] = ord($string{$i});
}
return $result;
}
//
//
//
function format_number ($number='', $divchar = ',', $divat = 3) {
$decimals = '';
$formatted = '';
if (strstr($number, '.')) {
$pieces = explode('.', $number);
$number = $pieces[0];
$decimals = '.' . $pieces[1];
} else {
$number = (string) $number;
}
if (strlen($number) <= $divat)
return $number;
$j = 0;
for ($i = strlen($number) - 1; $i >= 0; $i--) {
if ($j == $divat) {
$formatted = $divchar . $formatted;
$j = 0;
}
$formatted = $number[$i] . $formatted;
$j++;
}
return $formatted . $decimals;
}
}
?>
<?php
require_once(dirname(__FILE__).'/functions.class.php');
class rank extends functions {
var $url;
var $pagerank;
var $alexa_rank;
var $backlinks = array('google' => '', 'yahoo' => '', 'msn' => '', 'altavista' => '', 'alltheweb' => '');
var $dmoz;
#start
function rank ($url) {
$this->url = $url;
$this->url = preg_replace('/http\:\/\//si', '', $this->url);
$this->pagerank = $this->__pagerank();
$this->alexa_rank = $this->__alexa_rank();
$this->backlinks['google'] = $this->__backlinks('google');
$this->backlinks['yahoo'] = $this->__backlinks('yahoo');
$this->backlinks['msn'] = $this->__backlinks('msn');
$this->backlinks['altavista'] = $this->__backlinks('altavista');
$this->backlinks['alltheweb'] = $this->__backlinks('alltheweb');
}
#pagerank
function __pagerank () {
$url = 'info:' . urldecode($this->url);
$checksum = $this->checksum($this->strord($url));
$url = 'http://www.google.com/search?client=navclient-auto&ch=6' . $checksum . '&features=Rank&q=' . $url;
$v = $this->my_curl_crawl($url);
preg_match('/Rank_([0-9]+):([0-9]+):([0-9]+)/si', $v, $r);
return ($r[3]) ? $r[3] : '0';
}
#alexa_rank
function __alexa_rank () {
$url = 'http://data.alexa.com/data?cli=10&dat=snbamz&url=' . urlencode($this->url);
$v = $this->my_curl_crawl($url);
preg_match('/\<popularity url\="(.*?)" TEXT\="([0-9]+)"\/\>/si', $v, $r);
return ($r[2]) ? $r[2] : '0';
}
#backlinks
function __backlinks ($engine) {
switch ($engine) {
#google
case 'google':
$url = 'http://www.google.com/search?q=link%3A' . urlencode($this->url);
$v = $this->my_curl_crawl($url);
preg_match('/of about \<b\>([0-9\,]+)\<\/b\>/si', $v, $r);
return ($r[1]) ? str_replace(',', '', $r[1]) : '0';
break;
#yahoo
case 'yahoo':
$url = 'http://search.yahoo.com/search?p=links%3A' . urlencode($this->url);
$v = $this->my_curl_crawl($url);
preg_match('/of about ([0-9\,]+)/si', $v, $r);
return ($r[1]) ? str_replace(',', '', $r[1]) : '0';
break;
#msn
case 'msn':
$url = 'http://search.msn.com/results.aspx?q=link%3A' . urlencode($this->url);
$v = $this->my_curl_crawl($url);
preg_match('/of ([0-9\,]+) results/si', $v, $r);
return ($r[1]) ? str_replace(',', '', $r[1]) : '0';
break;
#altavista
case 'altavista':
$url = 'http://www.altavista.com/web/results?q=link%3A' . urlencode($this->url);
$v = $this->my_curl_crawl($url);
preg_match('/found ([0-9\,]+) results/si', $v, $r);
return ($r[1]) ? str_replace(',', '', $r[1]) : '0';
break;
#alltheweb
case 'alltheweb':
$url = 'http://www.alltheweb.com/search?q=link%3A' . urlencode($this->url);
$v = $this->my_curl_crawl($url);
preg_match('/\<span class\="ofSoMany"\>([0-9\,]+)\<\/span\>/si', $v, $r);
return ($r[1]) ? str_replace(',', '', $r[1]) : '0';
break;
}
}
function my_curl_crawl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
$content = curl_exec($ch);
curl_close($ch);
return($content);
}
}
?>
<?php
require_once('rank.class.php');
$rank = new rank('www.example.com');
echo($rank->pagerank);
print_r($rank->backlinks);
?>
