获得Google PR值的PHP代码
2018-09-07 13:45
今天更新blog程序后,突然发现google工具条上的PR条增加了一点,不过一直以来Google工具条上的PR因为缓冲问题,使得当前显示的PR值并不一定是目前页面的PR值,因此去查了下,发现blog站点(的PR值上升到了3,但是首页(还是2。霍霍,庆贺一下。
不过glemir今天上午告诉我他的blog早已经到了3,使我有点嫉妒,连带想起了Rachel的blog,他们更新都没有我勤快,但是他们的PR基本上不必我差。由此我得出两个自我安慰的结论:
1)Rachel的PR和我的一样,是因为他的游记日志受欢迎,我没有他的手笔。
2)glemir的PR升的比我的快,那是因为他用了一个好blog程序--wordpress
哈哈,自嘲一下。
转入正题,贴上获得Google的PR值代码,声明不是我写的,只是修改,checksum的算法暂时还不知道。
演示代码点击这里
复制代码 代码如下:
<?php
define(GOOGLE_MAGIC,0xE6359A60);
functionzeroFill($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;
}
functionmix($a,$b,$c)
{
$a-=$b;$a-=$c;$a^=(zeroFill($c,13));
$b-=$c;$b-=$a;$b^=($a<<8);
$c-=$a;$c-=$b;$c^=(zeroFill($b,13));
$a-=$b;$a-=$c;$a^=(zeroFill($c,12));
$b-=$c;$b-=$a;$b^=($a<<16);
$c-=$a;$c-=$b;$c^=(zeroFill($b,5));
$a-=$b;$a-=$c;$a^=(zeroFill($c,3));
$b-=$c;$b-=$a;$b^=($a<<10);
$c-=$a;$c-=$b;$c^=(zeroFill($b,15));
returnarray($a,$b,$c);
}
functionGoogleCH($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=mix($a,$b,$c);
$a=$mix[0];$b=$mix[1];$c=$mix[2];
$k+=12;
$len-=12;
}
$c+=$length;
switch($len)
{
case11:$c+=($url[$k+10]<<24);
case10:$c+=($url[$k+9]<<16);
case9:$c+=($url[$k+8]<<8);
case8:$b+=($url[$k+7]<<24);
case7:$b+=($url[$k+6]<<16);
case6:$b+=($url[$k+5]<<8);
case5:$b+=($url[$k+4]);
case4:$a+=($url[$k+3]<<24);
case3:$a+=($url[$k+2]<<16);
case2:$a+=($url[$k+1]<<8);
case1:$a+=($url[$k+0]);
}
$mix=mix($a,$b,$c);
return$mix[2];
}
functionstrord($string){
for($i=0;$i<strlen($string);$i++){
$result[$i]=ord($string{$i});
}
return$result;
}
functionReadPR($link)
{
$fp=fsockopen(
if(!$fp)
{
echo$errstr($errno)\n;
exit(1);
}
else
{
$out=GET$linkHTTP/1.0\r\n;
$out.=User-Agent:Mozilla/4.0(compatible;GoogleToolbar2.0.114.9-big;Linux2.6)\r\n;
$out.=Connection:Close\r\n\r\n;
fwrite($fp,$out);
do{
$line=fgets($fp,128);
}while($line!==\r\n);
$data=fread($fp,8192);
fclose($fp);
return$data;
}
}
functionGetPR($url)
{
$url=info:.$url;
$ch=GoogleCH(strord($url));
$data=ReadPR(/search?client=navclient-auto&ch=6$ch&features=Rank&q=$url);
$rankarray=explode(:,$data);
return$rankarray[2];
}
if(isset($_POST[url])&&$_POST[url]!==)
{
echoPageRank:.GetPR($_POST[url]);
}
?>
<html><title>GooglePR值查询</title>
<body>GooglePR值查询<ahref=pr.phps>获取源代码</a>
<formaction=method=post><br/>
URL:<inputname=urlvalue=
<inputname=submittype=submitvalue=GetPR>
</form></body></html>
上一篇:数字转英文
下一篇:php两个多维数组组合遍历的实例
文章标题:获得Google PR值的PHP代码
文章链接:http://soscw.com/index.php/essay/12894.html