获得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 相关文章推荐
PHP生成带有雪花背景的验证码
Oct 09 PHP
php连接数据库代码应用分析
May 29 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
Jun 09 PHP
php使用google地图应用实例
Dec 31 PHP
PHP解密Unicode及Escape加密字符串
May 17 PHP
thinkphp命名空间用法实例详解
Dec 30 PHP
php调用自己java程序的方法详解
May 13 PHP
ThinkPHP删除栏目(实现批量删除栏目)
Jun 21 PHP
PHP设计模式之单例模式原理与实现方法分析
Apr 25 PHP
Yaf框架封装的MySQL数据库操作示例
Mar 06 PHP
php学习笔记之字符串常见操作总结
Jul 16 PHP
php面向对象重点知识分享
Sep 27 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脚本的10个技巧(8)
2006/10/09 PHP
安装APACHE
2007/01/15 PHP
php中将数组存到文件里的实现代码
2012/01/19 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
jquery 1.3.2 IE8中的一点点的小问题解决方法
2009/07/10 Javascript
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
基于jquery的无限级联下拉框js插件
2011/10/29 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
ExtJS判断IE浏览器类型的方法
2014/02/10 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
2014/05/04 Javascript
JQuery获取表格数据示例代码
2014/05/26 Javascript
深入分析原生JavaScript事件
2014/12/29 Javascript
JavaScript实现自动弹出窗口并自动关闭窗口的方法
2015/08/06 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
JS实现拖拽的方法分析
2016/12/20 Javascript
如何解决vue与传统jquery插件冲突
2017/03/20 Javascript
解决VueCil代理本地proxytable无效报错404的问题
2020/11/07 Javascript
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
python中的 zip函数详解及用法举例
2020/02/16 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
英国儿童图书网站:Scholastic
2017/03/26 全球购物
英国最大的海报商店:GB Posters
2018/03/20 全球购物
网络宣传方案
2014/03/15 职场文书
我的梦想演讲稿
2014/04/30 职场文书
货物运输服务质量承诺书
2014/05/29 职场文书
本科应届生求职信
2014/08/05 职场文书
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
2014年维稳工作总结
2014/11/18 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
2015年度对口支援工作总结
2015/07/22 职场文书
Vue图片裁剪组件实例代码
2021/07/02 Vue.js