获得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 22 PHP
用php获取本周,上周,本月,上月,本季度日期的代码
Aug 05 PHP
PHP 异步执行方法,模拟多线程的应用分析
Jun 03 PHP
php strnatcmp()函数的用法总结
Nov 27 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
Jun 19 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
Aug 21 PHP
ThinkPHP中的三大自动简介
Aug 22 PHP
PHP实现视频文件上传完整实例
Aug 28 PHP
如何使用PHP对网站验证码进行破解
Sep 17 PHP
php mongodb操作类 带几个简单的例子
Aug 25 PHP
Laravel实现搜索的时候分页并携带参数
Oct 15 PHP
WordPress免插件实现面包屑导航的示例代码
Aug 20 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
PHP4之COOKIE支持详解
2006/10/09 PHP
PHP实现简单搜歌的方法
2015/07/28 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
js 有框架页面跳转(target)三种情况下的应用
2013/04/09 Javascript
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
jQuery实现友好的轮播图片特效
2015/01/12 Javascript
基于jQuery实现最基本的淡入淡出效果实例
2015/02/02 Javascript
jQuery实现连续动画效果实例分析
2015/10/09 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
Vue 动态设置路由参数的案例分析
2018/04/24 Javascript
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
2019/06/18 jQuery
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
vue中touch和click共存的解决方式
2020/07/28 Javascript
web.py获取上传文件名的正确方法
2014/08/26 Python
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
python实现简单爬虫功能的示例
2016/10/24 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
2019/06/19 Python
Python任务调度模块APScheduler使用
2020/04/15 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
Python Dict找出value大于某值或key大于某值的所有项方式
2020/06/05 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
房地产财务管理制度
2014/02/02 职场文书
小学语文国培感言
2014/03/04 职场文书
婚前协议书怎么写
2014/04/15 职场文书
员工合理化建议书
2014/05/19 职场文书
好的促销活动方案
2014/08/21 职场文书
教师遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
食堂采购员岗位职责
2015/04/03 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js