获得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 购物车的例子
May 04 PHP
php数组函数序列之array_combine() - 数组合并函数使用说明
Oct 29 PHP
PHP求小于1000的所有水仙花数的代码
Jan 10 PHP
php json_encode值中大括号与花括号区别
Sep 30 PHP
php实例分享之mysql数据备份
May 19 PHP
完整删除ecshop中获取店铺信息的API
Dec 24 PHP
PHP Yii框架之表单验证规则大全
Nov 16 PHP
php版微信自动获取收货地址api用法示例
Sep 22 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
Nov 09 PHP
完美解决在ThinkPHP控制器中命名空间的问题
May 05 PHP
PHP关于foreach复制知识点总结
Jan 28 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
Oct 17 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 执行系统命令的方法
2009/07/07 PHP
php实现无限级分类实现代码(递归方法)
2011/01/01 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
jquery设置控件位置的方法
2013/08/21 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
JS数组合并push与concat区别分析
2015/12/17 Javascript
微信小程序之蓝牙的链接
2017/09/26 Javascript
angular中ui calendar的一些使用心得(推荐)
2017/11/03 Javascript
Nuxt.js 静态资源和打包的操作
2020/11/06 Javascript
[56:00]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第一局
2016/03/05 DOTA
[52:22]EG vs VG Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
Python中列表、字典、元组、集合数据结构整理
2014/11/20 Python
python中as用法实例分析
2015/04/30 Python
Python选课系统开发程序
2016/09/02 Python
python实现小世界网络生成
2019/11/21 Python
python识别验证码图片实例详解
2020/02/17 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
2020/02/22 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
使用pytorch实现论文中的unet网络
2020/06/24 Python
python3.7调试的实例方法
2020/07/21 Python
Amaze UI 文件选择域的示例代码
2020/08/26 HTML / CSS
类的核心特性有哪些
2014/01/01 面试题
报关简历自我评价怎么写
2013/09/19 职场文书
大学新生军训感言
2014/02/25 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
2014年煤矿安全工作总结
2014/12/04 职场文书
蜗居观后感
2015/06/11 职场文书
毛主席纪念堂观后感
2015/06/17 职场文书
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
2021/04/01 PHP
python - timeit 时间模块
2021/04/06 Python
Redis集群的关闭与重启操作
2021/07/07 Redis
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis
uniapp开发打包多端应用完整方法指南
2022/12/24 Javascript