• 【2018夏季达沃斯】未来就业报告发布:机器将比人更“能干” 哪些职位更“吃香”? 2018-09-19
  • 西安市民:本想买点香菜吃火锅?比较后还是买了些肉 2018-09-19
  • 安吉发布乡村治理标准规范 2018-09-19
  • 华北能源监管局开展电网运行风险管控专项督查 2018-09-18
  • 马来西亚新山依斯干达特区吸资2531亿马币 ——凤凰网房产马来西亚 2018-09-18
  • 繁星戏剧挑战浸没式独角戏 2018-09-18
  • 领导干部自然资源资产离任审计制度试点 让福建省光泽县绿意盎然(图)-地方新闻-时政频道-中工网 2018-09-08
  • 人民日报评留美生数落父母:为亲情拓对话空间 2018-09-07
  • 网友给四川省委书记、省长留言获回复 共计25条 2018-09-07
  • 娱乐城新优惠 2018-09-06
  • 无人售货架现身出租车内 乘客扫码付款随时取走零食 2018-09-06
  • 江西公布拖欠劳动报酬典型案例 最高拖欠近200万元 2018-09-06
  • 做学习宣传贯彻人民领袖思想的排头兵 2018-09-06
  • 华夏幸福荣获2018中国品牌先锋大奖之杰出企业奖 2018-09-05
  • 10大路口因礼让斑马线致堵 济南交警推新规约束行人 ——凤凰网房产济南 2018-09-05
  • PHP获取网站的PR值代码

    栏目: 编程语言 发布于: 2014-04-27 23:14:24

    下面是本人搜集整理的一个利用PHP获取网站的google PR值的代码的方法,特贡献出来分享一下,完整代码如下:

    <?php
    $url='www.phpernote.com';
    define('G_PR_GET_TYPE_FILE', 1);
    define('G_PR_GET_TYPE_SOCKET', 2);
    
    echo getGooglePR($url);//获取http://www.rocksun.cn的PR值
    
    function getGooglePR($_url,$gettype=G_PR_GET_TYPE_SOCKET){
    	$url='info:'.$_url;
    	$ch=GCH(strord($url));
    	$ch=NewGCH($ch);
    	$url=str_replace("_","%5F",'info:'.urlencode($_url));
    	$googlePRUrl="http://www.rocksun.cn/tbr?client=navclient-auto&ch=6".$ch."&ie=UTF-8&oe=UTF-8&features=Rank&q=".$url;
    	$pr_str=retrieveURLContent($googlePRUrl,$gettype);
    	return substr($pr_str,strrpos($pr_str, ":")+1);
    }
    function zeroFill($a, $b){
    	$z=hexdec('8'.implode('',array_fill(0,PHP_INT_SIZE*2-1,'0')));
    	if($z&$a){
    	$a=($a>>1);
    	$a &=(~$z);
    	$a |=hexdec('4'.implode('',array_fill(0,PHP_INT_SIZE*2-1,'0')));
    	$a=($a>>($b-1));
    	}else{
    	$a=($a>>$b);
    	}
    	return $a;
    }
    function trunkbitForce32bit($n){
    	if(PHP_INT_SIZE<=4){
    		settype($n,'float');
    		if($n<0){
    			$n+=4294967296;
    		}
    		return $n;
    	}else{
    		$clearbit='';
    		for($i=0;$i<PHP_INT_SIZE-4;$i++){
    			$clearbit.='00';
    		}
    		for($i=0;$i<4;$i++){
    			$clearbit.='ff';
    		}
    		return ($n&hexdec($clearbit));
    	}
    }
    function bigxor($m,$n){
    	return $m ^ $n;
    }
    function mix($a,$b,$c){
    	$a=trunkbitForce32bit($a);
    	$b=trunkbitForce32bit($b);
    	$c=trunkbitForce32bit($c);
    	$a-=$b;
    	$a=trunkbitForce32bit($a);
    	$a-=$c;
    	$a=trunkbitForce32bit($a);
    	$a=bigxor($a,(zeroFill($c,13)));
    	$a=trunkbitForce32bit($a);
    	$b-=$c;
    	$b=trunkbitForce32bit($b);
    	$b-=$a;
    	$b=trunkbitForce32bit($b);
    	$b=bigxor($b,trunkbitForce32bit($a<<8));
    	$b=trunkbitForce32bit($b);
    	$c-=$a;
    	$c=trunkbitForce32bit($c);
    	$c-=$b;
    	$c=trunkbitForce32bit($c);
    	$c=bigxor($c,(zeroFill($b,13)));
    	$c=trunkbitForce32bit($c);
    	$a-=$b;
    	$a=trunkbitForce32bit($a);
    	$a-=$c;
    	$a=trunkbitForce32bit($a);
    	$a=bigxor($a,(zeroFill($c,12)));
    	$a=trunkbitForce32bit($a);
    	$b-=$c;
    	$b=trunkbitForce32bit($b);
    	$b-=$a;
    	$b=trunkbitForce32bit($b);
    	$b=bigxor($b,trunkbitForce32bit($a<<16));
    	$c-=$a;
    	$c=trunkbitForce32bit($c);
    	$c-=$b;
    	$c=trunkbitForce32bit($c);
    	$c=bigxor($c,(zeroFill($b,5)));
    	$c=trunkbitForce32bit($c);
    	$a-=$b;
    	$a=trunkbitForce32bit($a);
    	$a-=$c;
    	$a=trunkbitForce32bit($a);
    	$a=bigxor($a,(zeroFill($c,3)));
    	$a=trunkbitForce32bit($a);
    	$b-=$c;
    	$b=trunkbitForce32bit($b);
    	$b-=$a;
    	$b=trunkbitForce32bit($b);
    	$b=bigxor($b,trunkbitForce32bit($a<<10));
    	$c-=$a;
    	$c=trunkbitForce32bit($c);
    	$c-=$b;
    	$c=trunkbitForce32bit($c);
    	$c=bigxor($c,(zeroFill($b,15)));
    	$c=trunkbitForce32bit($c);
    	return array($a,$b,$c);
    }
    function NewGCH($ch){
    	$ch=(trunkbitForce32bit(($ch/7 )<<2)|((myfmod($ch,13))&7));
    	$prbuf=array();
    	$prbuf[0]=$ch;
    	for($i=1;$i<20;$i++){
    		$prbuf[$i]=$prbuf[$i-1] - 9;
    	}
    	$ch=GCH(c32to8bit($prbuf));
    	return $ch;
    }
    function myfmod($x,$y){
    	$i=floor($x/$y );
    	return ($x - $i * $y );
    }
    function c32to8bit($arr32){
    	$arr8=array();
    	for($i=0;$i<count($arr32);$i++){
    		for($bitOrder=$i * 4;$bitOrder<=$i * 4 + 3;$bitOrder++){
    			$arr8[$bitOrder]=$arr32[$i]&255;
    			$arr32[$i]=zeroFill($arr32[$i], 8 );
    		}
    	}
    	return $arr8;
    }
    function GCH($url, $length=null){
    	if(is_null($length)){
    		$length=sizeof($url);
    	}
    	$init=0xE6359A60;
    	$a=0x9E3779B9;
    	$b=0x9E3779B9;
    	$c=0xE6359A60;
    	$k=0;
    	$len=$length;
    	$mixo=array();
    	while($len >=12){
    		$a+=($url[$k+0] +trunkbitForce32bit($url[$k+1]<<8)+trunkbitForce32bit($url[$k+2]<<16)+trunkbitForce32bit($url[$k+3]<<24));
    		$b+=($url[$k+4] +trunkbitForce32bit($url[$k+5]<<8)
    		+trunkbitForce32bit($url[$k+6]<<16)
    		+trunkbitForce32bit($url[$k+7]<<24));
    		$c+=($url[$k+8] +trunkbitForce32bit($url[$k+9]<<8)
    		+trunkbitForce32bit($url[$k+10]<<16)
    		+trunkbitForce32bit($url[$k+11]<<24));
    		$mixo=mix($a,$b,$c);
    		$a=$mixo[0];$b=$mixo[1];$c=$mixo[2];
    		$k+=12;
    		$len-=12;
    	}
    	$c+=$length;
    	switch($len){
    	case 11:
    	$c+=trunkbitForce32bit($url[$k+10]<<24);
    	case 10:
    	$c+=trunkbitForce32bit($url[$k+9]<<16);
    	case 9 :
    	$c+=trunkbitForce32bit($url[$k+8]<<8);
    	case 8 :
    	$b+=trunkbitForce32bit($url[$k+7]<<24);
    	case 7 :
    	$b+=trunkbitForce32bit($url[$k+6]<<16);
    	case 6 :
    	$b+=trunkbitForce32bit($url[$k+5]<<8);
    	case 5 :
    	$b+=trunkbitForce32bit($url[$k+4]);
    	case 4 :
    	$a+=trunkbitForce32bit($url[$k+3]<<24);
    	case 3 :
    	$a+=trunkbitForce32bit($url[$k+2]<<16);
    	case 2 :
    	$a+=trunkbitForce32bit($url[$k+1]<<8);
    	case 1 :
    	$a+=trunkbitForce32bit($url[$k+0]);
    	}
    	$mixo=mix($a, $b, $c );
    	$mixo[2]=trunkbitForce32bit($mixo[2]);
    	if($mixo[2]<0){
    	return (hexdec('1'.implode('',array_fill(0,PHP_INT_SIZE*2,'0'))) + $mixo[2] );
    	}else{
    	return $mixo[2];
    	}
    }
    function strord($string){
    	for($i=0;$i<strlen($string);$i++){
    		$result[$i]=ord($string{$i});
    	}
    	return $result;
    }
    function retrieveURLContent($url,$gettype){
    	switch($gettype){
    		case G_PR_GET_TYPE_FILE:
    			return retrieveURLContentByFile($url);
    		break;
    		default:
    			return retrieveURLContentBySocket($url);
    		break;
    	}
    }
    function retrieveURLContentByFile($url){
    	$fd=@fopen($url,"r");
    	if(!$fd){
    		return false;
    	}
    	$result="";
    	while($buffer=fgets($fd, 4096)){
    		$result.=$buffer;
    	}
    	fclose($fd);
    	return $result;
    }
    function retrieveURLContentBySocket($url,$host="",$port=80,$timeout=30){
    	if($host ==""){
    		if(!($pos=strpos($url,'://'))){return false;}
    		$host=substr($url,
    		$pos+3,
    		strpos($url,'/',$pos+3) - $pos - 3);
    		$uri=substr($url,strpos($url,'/',$pos+3));
    	}else{
    		$uri=$url;
    	}
    	$request="GET ".$uri." HTTP/1.0\r\n"."Host: ".$host."\r\n"."Accept: */*\r\n"."User-Agent: ZealGet\r\n"."\r\n";
    	$sHnd=@fsockopen ($host, $port, $errno, $errstr, $timeout);
    	if(!$sHnd){
    		return false;
    	}
    	@fputs($sHnd, $request);
    	$result='';
    	while (!feof($sHnd)){
    		$result.=fgets($sHnd,4096);
    	}
    	fclose($sHnd);
    	$headerend=strpos($result,"\r\n\r\n");
    	if(is_bool($headerend)){
    		return $result;
    	}else{
    		return substr($result,$headerend+4);
    	}
    }
    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:PHP获取网站的PR值代码
    IT技术书籍推荐:
    GitHub入门与实践
    GitHub入门与实践
    大塚弘记 (作者), 支鹏浩 (译者), 刘斌 (译者)
    《GitHub入门与实践》从Git的基本知识和操作方法入手,详细介绍了GitHub的各种功能,GitHub与其他工具或服务的协作,使用GitHub的开发流程以及如何将GitHub引入到企业中。在讲解GitHub的代表功能Pull Request时,本书专门搭建了供各位读者实践的仓库,邀请各位读者进行Pull Request并共同维护。 《GitHub入门与实践》旨在指导各位读者如何在开发现场使用GitHub进行高效开发,适合所有想要使用GitHub进行开发的程序员或团队阅读。