获得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
FCKeditor的安装(PHP)
Jan 13 PHP
php print EOF实现方法
May 21 PHP
Php中使用Select 查询语句的实例
Feb 19 PHP
php计算到指定日期还有多少天的方法
Apr 14 PHP
100行PHP代码实现socks5代理服务器
Apr 28 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
Nov 14 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
php对象工厂类完整示例
Aug 09 PHP
PDO::quote讲解
Jan 29 PHP
解决Laravel使用验证时跳转到首页的问题
Nov 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语法(3)
2006/10/09 PHP
php 高效率写法 推荐
2010/02/21 PHP
php入门教程之Zend Studio设置与开发实例
2016/09/09 PHP
PHP链表操作简单示例
2016/10/15 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
jquery选择器中的空格与大于号&gt;、加号+与波浪号~的区别介绍
2016/06/24 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
基于Bootstrap表单验证功能
2017/11/17 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
python的id()函数解密过程
2012/12/25 Python
python分析apache访问日志脚本分享
2015/02/26 Python
python访问系统环境变量的方法
2015/04/29 Python
Python实现自动添加脚本头信息的示例代码
2016/09/02 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
python 识别图片中的文字信息方法
2018/05/10 Python
Python 利用pydub库操作音频文件的方法
2019/01/09 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
Django数据库迁移常见使用方法
2020/11/12 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
美国性感内衣店:Yandy
2018/06/12 全球购物
使用useBean标志初始化BEAN时如何接受初始化参数
2012/02/11 面试题
init进程的作用
2012/04/12 面试题
12月小学生校园广播稿
2014/02/04 职场文书
家长评语和期望
2014/02/10 职场文书
入党积极分子评语
2014/05/04 职场文书
2015年世界无烟日活动方案
2015/05/04 职场文书
2015年法务工作总结范文
2015/05/23 职场文书
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android