Dernière mise à jour: lun 31 mai 2010

google_pagerank()

(PHP 5)

Retourne le PageRank attribué par Google d'une URL.

Source

<?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);
}

?>

Syntaxe

int google_pagerank ( string $url )

Arguments

  1. url - L'URL dont on souhaite connaitre le PageRank.

Valeurs de retour

Le PageRank de l'URL si attribué par Google, -1 dans le cas contraire ou FALSE si une erreur survient.

Exemples

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;
}

?>

Voir aussi

Commentaire(s)

  • La fonction a été mise à jour.
    Dans quelques cas assez rare, elle retournait 0 à la place du vrai PR.

Poster un commentaire