获得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 应用程序的安全 -- 不能违反的四条安全规则
Nov 26 PHP
php 日期时间处理函数小结
Dec 18 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
Jun 10 PHP
php中session与cookie的比较
Jan 27 PHP
php中array_multisort对多维数组排序的方法
Jun 21 PHP
php实现在多维数组中查找特定value的方法
Jul 29 PHP
PHP弹出对话框技巧详细解读
Sep 26 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
Apr 09 PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 PHP
PHP时间处理类操作示例
Sep 05 PHP
PDO::query讲解
Jan 29 PHP
在laravel中实现ORM模型使用第二个数据库设置
Oct 24 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下通过curl抓取yahoo boss 搜索结果的实现代码
2011/06/10 PHP
php遍历目录方法小结
2015/03/10 PHP
PHP之预定义接口详解
2015/07/29 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
为数据添加append,remove功能
2006/10/03 Javascript
Jquery+ajax请求data显示在GridView上(asp.net)
2010/08/27 Javascript
firefox下input type=&quot;file&quot;的size是多大
2011/10/24 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
javascript实现的闭包简单实例
2015/07/17 Javascript
基于insertBefore制作简单的循环插空效果
2015/09/21 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
微信小程序dom操作的替代思路实例分析
2018/12/06 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
2019/09/09 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
Element Input输入框的使用方法
2020/07/26 Javascript
python封装对象实现时间效果
2020/04/23 Python
python3编码问题汇总
2016/09/06 Python
详解Python中的相对导入和绝对导入
2017/01/06 Python
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
python读取文件名称生成list的方法
2018/04/27 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
python实时获取外部程序输出结果的方法
2019/01/12 Python
python处理自动化任务之同时批量修改word里面的内容的方法
2019/08/23 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
2019/10/24 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
2019/11/06 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
如何用Python进行时间序列分解和预测
2021/03/01 Python
办公室文书岗位职责
2013/12/16 职场文书
三好学生演讲稿范文
2014/04/26 职场文书
班级文化标语
2014/06/23 职场文书
授权委托书(完整版)
2014/09/10 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js