Related Topics
No topics are associated with this blog
Like so many things on this website, the code to find the Google PageRank of the pages was lifted from someone else's work. This work is particularly praiseworthy because it worked exactly as described the minute I got it implemented.
See PHP script to display Google PageRank
pagerank.php
<?php
define('GOOGLE_MAGIC', 0xE6359A60);
class pageRank{
var $pr;
function zeroFill($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; $a ^= ($this->zeroFill($c,13));
$b -= $c; $b -= $a; $b ^= ($a<<8);
$c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,13));
$a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,12));
$b -= $c; $b -= $a; $b ^= ($a<<16);
$c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,5));
$a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,3));
$b -= $c; $b -= $a; $b ^= ($a<<10);
$c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,15));
return array($a,$b,$c);
}
function GoogleCH($url, $length=null, $init=GOOGLE_MAGIC) {
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);
/* the first byte of c is reserved for the length */
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);
/* report the result */
return $mix[2];
}
//converts a string into an array of integers containing the numeric value of the char
function strord($string) {
for($i=0;$i<strlen($string);$i++) {
$result[$i] = ord($string{$i});
}
return $result;
}
function printrank($url){
$ch = "6".$this->GoogleCH($this->strord("info:" . $url));
$fp = fsockopen("www.google.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /search?client=navclient-auto&ch=" . $ch .
"&features=Rank&q=info:" . $url . " HTTP/1.1\r\n" ;
$out .= "Host: www.google.com\r\n" ;
$out .= "Connection: Close\r\n\r\n" ;
fwrite($fp, $out);
while (!feof($fp)) {
$data = fgets($fp, 128);
$pos = strpos($data, "Rank_");
if($pos === false){
}else{
$pagerank = substr($data, $pos + 9);
$this->pr_image($pagerank);
}
}
fclose($fp);
}
}
//
// Display pagerank image. Create your own or download images I made for this script.
// If you make your own make sure to call them pr0.gif, pr1.gif, pr2.gif etc.
//
function pr_image($pagerank){
if($pagerank == 0){
$this->pr = "<img src=\"images/pr0.gif\" alt=\"PageRank " .$pagerank. "
out of 10\">" ;
}elseif($pagerank == 1){
$this->pr = "<img src=\"images/pr1.gif\" alt=\"PageRank " .$pagerank. "
out of 10\">" ;
}elseif($pagerank == 2){
$this->pr = "<img src=\"images/pr2.gif\" alt=\"PageRank " .$pagerank. "
out of 10\">" ;
}elseif($pagerank == 3){
$this->pr = "<img src=\"images/pr3.gif\" alt=\"PageRank " .$pagerank. "
out of 10\">" ;
}elseif($pagerank == 4){
$this->pr = "<img src=\"images/pr4.gif\" alt=\"PageRank " .$pagerank. "
out of 10\">" ;
}elseif($pagerank == 5){
$this->pr = "<img src=\"images/pr5.gif\" alt=\"PageRank " .$pagerank. "
out of 10\">" ;
}elseif($pagerank == 6){
$this->pr = "<img src=\"images/pr6.gif\" alt=\"PageRank " .$pagerank. "
out of 10\">" ;
}elseif($pagerank == 7){
$this->pr = "<img src=\"images/pr7.gif\" alt=\"PageRank " .$pagerank. "
out of 10\">" ;
}elseif($pagerank == 8){
$this->pr = "<img src=\"images/pr8.gif\" alt=\"PageRank " .$pagerank. "
out of 10\">" ;
}elseif($pagerank == 9){
$this->pr = "<img src=\"images/pr9.gif\" alt=\"PageRank " .$pagerank. "
out of 10\">" ;
}else{
$this->pr = "<img src=\"images/pr10.gif\" alt=\"PageRank " .$pagerank.
" out of 10\">" ;
}
}
function get_pr(){
return $this->pr;
}
}
?>
Usage
Do following:
1. Save the code above as pagerank.php.
2. Download or create your own images to display each rank.
3. Create a directory "images" containing all page rank images.
4. See code below on how to use the class.
<?php
include("pagerank.php");
$gpr = new pageRank();
$gpr->printrank("https://www.yahoo.com");
//display image
echo $gpr->get_pr();
?>
(my thanks to https://centricle.com/tools/html-entities/ for HTML encoding)
Originally published: Friday, June 06, 2008; most-recently modified: Monday, June 04, 2012
| Posted by: Faggot54 | Oct 22, 2009 2:34 AM |
| Posted by: Maxx26 | Oct 10, 2009 12:01 PM |