获得Google PR值的PHP代码


Posted in PHP onJanuary 28, 2007

今天更新blog程序后,突然发现google工具条上的PR条增加了一点,不过一直以来Google工具条上的PR因为缓冲问题,使得当前显示的PR值并不一定是目前页面的PR值,因此去查了下,发现blog站点(http://mlsx.xplore.cn/)的PR值上升到了3,但是首页 (http://mlsx.xplore.cn)还是2。霍霍,庆贺一下。

不过glemir今天上午告诉我他的blog早已经到了3,使我有点嫉妒,连带想起了Rachel的blog ,他们更新都没有我勤快,但是他们的PR基本上不必我差。由此我得出两个自我安慰的结论:

1)Rachel的PR和我的一样,是因为他的游记日志受欢迎,我没有他的手笔。

2)glemir的PR升的比我的快,那是因为他用了一个好blog程序--wordpress

哈哈,自嘲一下。

转入正题,贴上获得Google的PR值代码,声明不是我写的,只是修改,checksum的算法暂时还不知道。

演示代码点击这里

<?php 
define('GOOGLE_MAGIC', 0xE6359A60); 
function zeroFill($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 mix($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)); 
return array($a,$b,$c); 
} 
function GoogleCH($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) 
{ 
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 = mix($a,$b,$c); 
return $mix[2]; 
} 
function strord($string) { 
for($i=0;$i<strlen($string);$i++) { 
$result[$i] = ord($string{$i}); 
} 
return $result; 
} 
function ReadPR($link) 
{ 
$fp = fsockopen ("www.google.com", 80, $errno, $errstr, 30); 
if (!$fp) 
{ 
echo "$errstr ($errno)\n"; 
exit(1); 
} 
else 
{ 
$out = "GET $link HTTP/1.0\r\n"; 
$out .= "Host: toolbarqueries.google.com\r\n"; 
$out .= "User-Agent: Mozilla/4.0 (compatible; GoogleToolbar 2.0.114.9-big; Linux 2.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; 
} 
} 
function GetPR($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'] !== '' ) 
{ 
echo 'PageRank: '.GetPR($_POST['url']); 
} 
?> 
<html><title>Google PR值查询</title> 
<body>Google PR值查询 <a href='pr.phps' >获取源代码</a> 
<form action='' method='post'><br /> 
URL:<input name='url' value='http://' type='text' size=40> 
<input name='submit' type='submit' value='Get PR'> 
</form></body></html>
PHP 相关文章推荐
多重?l件?合查?(一)
Oct 09 PHP
php下使用strpos需要注意 === 运算符
Jul 17 PHP
PHP读取网页文件内容的实现代码(fopen,curl等)
Jun 23 PHP
Codeigniter操作数据库表的优化写法总结
Jun 12 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
Nov 05 PHP
PHP中把数据库查询结果输出为json格式简单实例
Apr 09 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
PHP后台微信支付和支付宝支付开发
Apr 28 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
浅谈Laravel核心解读之Console内核
Dec 02 PHP
thinkphp5实现微信扫码支付
Dec 23 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
Apr 29 PHP
一键删除顽固的空文件夹 软件下载
Jan 26 #PHP
php中通过smtp发邮件的类,测试通过
Jan 22 #PHP
php5.2.0内存管理改进
Jan 22 #PHP
php中截取字符串支持utf-8
Jan 18 #PHP
php中的登陆login
Jan 18 #PHP
php中的时间显示
Jan 18 #PHP
解决phpmyadmin中文乱码问题。。。
Jan 18 #PHP
You might like
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
使用php 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
php函数指定默认值方法的小例子
2013/12/04 PHP
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
2014/06/10 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
PHP MVC框架skymvc支持多文件上传
2016/05/26 PHP
PHP实现bitmap位图排序与求交集的方法
2016/07/28 PHP
PHP获取页面执行时间的方法(推荐)
2016/12/10 PHP
JavaScript XML操作 封装类
2009/07/01 Javascript
Nodejs极简入门教程(三):进程
2014/10/27 NodeJs
JavaScript动态修改背景颜色的方法
2015/04/16 Javascript
简单的jQuery入门指引
2015/07/28 Javascript
JavaScript实现点击按钮切换网页背景色的方法
2015/10/17 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
plupload+artdialog实现多平台上传文件
2016/07/19 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
用jquery的attr方法实现图片切换效果
2017/02/05 Javascript
微信小程序 swiper组件构建轮播图的实例
2017/09/20 Javascript
Vue中封装input组件的实例详解
2017/10/17 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
jQuery实现的隔行变色功能【案例】
2019/02/18 jQuery
了解JavaScript表单操作和表单域
2019/05/27 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
2020/09/12 Javascript
Python实现字符串格式化的方法小结
2017/02/20 Python
详谈python3 numpy-loadtxt的编码问题
2018/04/29 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
对matplotlib改变colorbar位置和方向的方法详解
2018/12/13 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
2019/11/11 Python
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
护士自我评价
2014/02/01 职场文书
节能减排倡议书
2014/04/15 职场文书
高三复习计划
2015/01/19 职场文书
学困生帮扶工作总结
2015/08/13 职场文书
Oracle11g R2 安装教程完整版
2021/06/04 Oracle