Google Page Rank(グーグルページランク)をPHPで取得するためのサンプルになります。
2011年10月より取得方法が変更になりましたので、古い取得方法で取得できない場合は、ご参考になさってみて下さい。
pagerank.php
<?php
class PRChecker {
var $url;
function checkPR ($url) {
set_time_limit(0);
$parsed = parse_url('http://' . ereg_replace('^http://', '', $url));
$url = 'info:' . $parsed['host'];
$checksum = $this->checksum($this->strord($url));
$url="http://toolbarqueries.google.com/tbr?client=navclient-auto&features=Rank&ch=6".$checksum."&q=".$url;
$data = file_get_contents($url);
preg_match('#Rank_[0-9]:[0-9]:([0-9]+){1,}#si', $data, $p);
$v = ($p[1]) ? $p[1] : 0;
return $v;
}
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 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 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 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;
}
}
?>
呼び出し方
include("pagerank.php");
$gpr = new PRChecker();
$pr = $gpr->checkPR($url);
0 コメント:
コメントを投稿