Page 1 sur 1

Calcul du pr

Posté : 06 août 2013, 08:28
par Falcon
Bonjour,
j'ai un script php pour faire le calcul des pr des sites.
Le calcul des pr ne marche plus
pouvez vous me venir en aide merci

<?php

class GooglePR
{
/*
* convert a string to a 32-bit integer
*/
function StrToNum($Str, $Check, $Magic)
{
$Int32Unit = 4294967296; // 2^32

$length = strlen($Str);
for ($i = 0; $i < $length; $i++)
{
$Check *= $Magic;
//If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31),
// the result of converting to integer is undefined
// refer to http://www.php.net/manual/en/language.types.integer.php
if ($Check >= $Int32Unit)
{
$Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
//if the check less than -2^31
$Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
}
$Check += ord($Str{$i});
}
return $Check;
}

/*
* Genearate a hash for a url
*/
function HashURL($String)
{
$Check1 = $this->StrToNum($String, 0x1505, 0x21);
$Check2 = $this->StrToNum($String, 0, 0x1003F);

$Check1 >>= 2;
$Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
$Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
$Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);

$T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
$T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );

return ($T1 | $T2);
}

/*
* genearate a checksum for the hash string
*/
function CheckHash($Hashnum)
{
$CheckByte = 0;
$Flag = 0;

$HashStr = sprintf('%u', $Hashnum) ;
$length = strlen($HashStr);

for ($i = $length - 1; $i >= 0; $i --)
{
$Re = $HashStr{$i};
if (1 === ($Flag % 2))
{
$Re += $Re;
$Re = (int)($Re / 10) + ($Re % 10);
}
$CheckByte += $Re;
$Flag ++;
}

$CheckByte %= 10;
if (0 !== $CheckByte)
{
$CheckByte = 10 - $CheckByte;
if (1 === ($Flag % 2) )
{
if (1 === ($CheckByte % 2))
{
$CheckByte += 9;
}
$CheckByte >>= 1;
}
}

return '7'.$CheckByte.$HashStr;
}

function PageRank($url, $dcgg = 'www.google.com')
{
$url = str_replace ("http://", "", $url);

if(preg_match("#^((?:[-_a-zA-Z0-9]+\.)*(?:[-a-zA-Z0-9]{1,63})\.(?:[a-zA-Z]{2,4})|(?:(?:[0-1]|[0-9]{2}|1[0-9]{2}|2(?:[0-4][0-9]|5[0-5]))\.){3}(?:[0-1]|[0-9]{2}|1[0-9]{2}|2(?:[0-4][0-9]|5[0-5])))(\:[0-9]{0,5})?(/(?:.)*)?$#", $url, $match)) {
$file = file('http://'.$dcgg.'/search?client=navclient-auto&ch='.$this->CheckHash($this->HashURL($match[1])).'&ie=UTF-8&oe=UTF-8&features=Rank&q=info:'.urlencode($match[1]));
$file = implode("", $file);
$pr = substr($file,strrpos($file, ":")+1);

if(!empty($pr) && $pr >= 0 && $pr <= 10) {
return $pr;
}
else {
return "0";
}
}
else {
return "0";
}
}
}

?>

Re: Calcul du pr

Posté : 06 août 2013, 12:55
par xTG
Commences par regarder le retour de la fonction file().
Si sans rien modifier du script il ne fonctionne plus il faut plutôt se pencher sur les données qu'il utilise.