(PHP 5)
Retourne le PageRank attribué par Google d'une URL.
<?php
/**
* google_pagerank <http://code.seebz.net/p/google-pagerank/>
*
* Copyright (c) 2010 Sébastien Corne, <http://seebz.net>
* This function is an adaptation for PHP of the LivePR Firefox Extension.
* It is licensed under the GPL.
*/
function google_pagerank($url)
{
$url = str_replace('http://','',$url);
// Usefulls functions
$fZeroFill = create_function('$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;
');
$fMix = create_function('$a,$b,$c',
'
$fZeroFill = "'.$fZeroFill.'";
$a -= $b; $a -= $c; $a ^= $fZeroFill($c,13);
$b -= $c; $b -= $a; $b ^= ($a<<8);
$c -= $a; $c -= $b; $c ^= $fZeroFill($b,13);
$a -= $b; $a -= $c; $a ^= $fZeroFill($c,12);
$b -= $c; $b -= $a; $b ^= ($a<<16);
$c -= $a; $c -= $b; $c ^= $fZeroFill($b,5);
$a -= $b; $a -= $c; $a ^= $fZeroFill($c,3);
$b -= $c; $b -= $a; $b ^= ($a<<10);
$c -= $a; $c -= $b; $c ^= $fZeroFill($b,15);
return array($a,$b,$c);
');
// Checksum calcul
$str = 'info:' . $url;
$str = array_map('ord',str_split($str));
$length = $len = count($str);
$c = $init = 0xE6359A60;
$a = $b = 0x9E3779B9;
$k = 0;
while($len >= 12) {
$a += ($str[$k+0] +($str[$k+1]<<8) +($str[$k+2]<<16) +($str[$k+3]<<24));
$b += ($str[$k+4] +($str[$k+5]<<8) +($str[$k+6]<<16) +($str[$k+7]<<24));
$c += ($str[$k+8] +($str[$k+9]<<8) +($str[$k+10]<<16) +($str[$k+11]<<24));
list($a,$b,$c) = $fMix($a,$b,$c);
$k += 12; $len -= 12;
}
$c += $length;
switch($len) {
case 11: $c += $str[$k+10]<<24;
case 10: $c += $str[$k+9]<<16;
case 9 : $c += $str[$k+8]<<8;
case 8 : $b += $str[$k+7]<<24;
case 7 : $b += $str[$k+6]<<16;
case 6 : $b += $str[$k+5]<<8;
case 5 : $b += $str[$k+4];
case 4 : $a += $str[$k+3]<<24;
case 3 : $a += $str[$k+2]<<16;
case 2 : $a += $str[$k+1]<<8;
case 1 : $a += $str[$k+0];
}
$checksum = '6' . end($fMix($a,$b,$c));
// Google request
$requestUrl = sprintf(
'http://toolbarqueries.google.com/search?client=navclient-auto&ch=%s&features=Rank&q=info:%s&num=100&filter=0',
$checksum,
$url
);
if( ($c = @file_get_contents($requestUrl)) === false ) return false;
$pr = preg_replace('`Rank_1:([0-9]+):([0-9]+)`i', '\\2', trim($c));
return ($pr==='' || !is_numeric($pr)) ? -1 : intval($pr);
}
?>
int google_pagerank ( string $url )
Le PageRank de l'URL si attribué par Google, -1 dans le cas contraire ou FALSE si une erreur survient.
Exemple #1 Exemple avec google_pagerank()
<?php
$url = "http://php.net/";
$pr = google_pagerank($url);
if($pr === false) {
echo "Erreur";
} elseif($pr == -1) {
echo "N/A";
} else {
echo $pr;
}
?>
Commentaire(s)
Poster un commentaire