当前位置: 首页 > 图文教程 > 网络编程 > PHP > 关于PHP在linux下面获取GOOGLE的PR值

PHP
PHP新手总结的PHP基础知识
php实现gb2312和unicode间编码转换
用php语言实现数据库连接详细代码介绍
详细解析 PHP 向 MySQL 发送数据过程
利用PHP V5开发多任务应用程序
详细讲解PHP中缓存技术的应用
php escapeshellcmd多字节编码漏洞
《PHP设计模式介绍》导言
《PHP设计模式介绍》第一章 编程惯用法
《PHP设计模式介绍》第二章 值对象模式
《PHP设计模式介绍》第三章 工厂模式
《PHP设计模式介绍》第四章 单件模式
《PHP设计模式介绍》第五章 注册模式
《PHP设计模式介绍》第六章 伪对象模式
《PHP设计模式介绍》第七章 策略模式
《PHP设计模式介绍》第八章 迭代器模式
《PHP设计模式介绍》第九章 观测模式
《PHP设计模式介绍》第十章 规范模式
《PHP设计模式介绍》第十一章 代理模式
《PHP设计模式介绍》第十二章 装饰器模式

关于PHP在linux下面获取GOOGLE的PR值


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 217 ::
收藏到网摘: n/a

关于PHP在linux下面获取GOOGLE的PR值哪位大侠知道,用PHP查询指定网址的pagerank对环境有什么要求啊,我在windows系统下面任何一台机器能行,在linux下面有的服务器能行,有的不能行!下面是我获取GOOGLE PR值的源码(非原创,只有一点修改)

define('GOOGLE_MAGIC', 0xE6359A60);
class pageRank{
var $pr;
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 ^= ($this->zeroFill($c,13));
  $b -= $c; $b -= $a; $b ^= ($a<<8);
  $c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,13));
  $a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,12));
  $b -= $c; $b -= $a; $b ^= ($a<<16);
  $c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,5));
  $a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,3));
  $b -= $c; $b -= $a; $b ^= ($a<<10);
  $c -= $a; $c -= $b; $c ^= ($this->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 = $this->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);
   /* the first byte of c is reserved for the length */
   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 = $this->mix($a,$b,$c);
  /* report the result */
  return $mix[2];
}

//converts a string into an array of integers containing the numeric value of the char

function strord($string){
  for($i=0;$i<strlen($string);$i++) {
   $result[$i] = ord($string{$i});
  }
  return $result;
}

function printrank($url){
  $ch = "6".$this->GoogleCH($this->strord("info:" . $url));

  $fp = fsockopen("www.google.com", 80, $errno, $errstr, 30);
  if(!$fp){
   echo "$errstr ($errno)<br />\n";
  }else{
   $out = "GET /search?client=navclient-auto&ch=" . $ch .  "&features=Rank&q=info:" . $url . " HTTP/1.1\r\n" ;
   $out .= "Host: www.google.com\r\n" ;
   $out .= "Connection: Close\r\n\r\n" ;
   fwrite($fp, $out);
   while (!feof($fp)) {
   $data = fgets($fp, 128);
   $pos = strpos($data, "Rank_");
    if($pos === false){
    }else{
     $pagerank = substr($data, $pos + 9);
     fclose($fp);
     return array($pagerank,$url);
    }
   }
   fclose($fp);
   return array(0,$url);
  }
}

function printranks($domains){
  foreach($domains as $value){
   $elements[] = $this->printrank($value);
  }
  return $elements;
}
//display pagerank image. Create your own or download images I made for this script. If you make your own make sure to call them pr0.gif, pr1.gif, pr2.gif etc.
function get_pr(){
  return $this->pr;
}
}
$gpr = new pageRank();
var_dump($gpr->printrank("www.www.ruanchen.com"));