这篇关于PHP获取网站的PR值代码的文章,觉得挺不错的,感兴趣的php开发者可以参考下,希望对大家在学习php的成长路上有所帮助!
下面是本人搜集整理的一个利用PHP获取网站的google PR值的代码的方法,特贡献出来分享一下,完整代码如下:
<?php
$url='www.feishuai.vip';
define('G_PR_GET_TYPE_FILE', 1);
define('G_PR_GET_TYPE_SOCKET', 2);
echo getGooglePR($url);//获取http://www.feishuai.vip的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://toolbarqueries.google.com/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值代码全部内容,希望这篇文章能够帮你解决如相关的PHP问题,更多请关注PHP栏目的其它相关文章!