php实现Google PR查询

发布人:kimi  时间:2007-10-27 00:20  来源: 网络转载  查看: 1043次   TAG: PHP应用  查询pr 

在网上搜索了下,找到个php实现Google PR查询的代码。平时自己查查还是比较方便的。顺便做了个网页来方便自己实用,Google PR值是什么?请看下面的引用资料


PR值全称为PageRank.PageRank(网页级别)是Google用于评测一个网页重要性的一种方法.在揉合了诸如Title标识和Keywords标识等所有其它因素之后.Google通过PageRank来调整结果.使那些更具重要性的网页在搜索结果中另网站排名获得提升.从而提高搜索结果的相关性和质量.PR值最高为10.一般PR值达到4.就算是一个不错的网站了.
PageRank是google搜索排名算法中的一个组成部分,级别从1到10级,10级为满分,PR值越高说明该网页在搜索排名中的地位越重要,也就是说,在其他条件相同的情况下,PR值高的网站在google搜索结果的排名中有优先权.

Google PageRank PR值在线查询



下面的代码貌似在服务器上有点问题,总是不能获得,而本机调试没有问题,不解中,而php的allow_url_fopen 为on,而且file函数测试也成功了,比较诡异,有时间再搞。先看代码:
<?php
define
('GMAG'0xE6359A60
);
$url $_GET['url'
];
$myWebSite 'http://'.$url
;
$googlepr getPR($myWebSite
);
$googlepr $googlepr == '' '0' $googlepr
;

echo 
"<br>The PR of $myWebsite is: ".$googlepr
;

//unsigned shift right
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 
GCH($url$length=null$init=GMAG
) {

    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) {
/* all the case statements fall through */
        
case 11$c+=($url[$k+10]<<24
);
        case 
10$c+=($url[$k+9]<<16
);
        case 
$c+=($url[$k+8]<<8
);
        
/* the first byte of c is reserved for the length */
        
case $b+=($url[$k+7]<<24
);
        case 
$b+=($url[$k+6]<<16
);
        case 
$b+=($url[$k+5]<<8
);
        case 
$b+=($url[$k+4
]);
        case 
$a+=($url[$k+3]<<24
);
        case 
$a+=($url[$k+2]<<16
);
        case 
$a+=($url[$k+1]<<8
);
        case 
$a+=($url[$k+0
]);
        
/* case 0: nothing left to add */
    
}

    
$mix 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 
getPR($_url
) {

    
$url 'info:'.$_url
;
    
$ch GCH(strord($url
));
    
$url='info:'.urlencode($_url
);
    
$pr = @file("http://www.google.com/search?client=navclient-auto&ch=6$ch&ie=UTF-8&oe=UTF-8&features=Rank&q=$url"
);
    
$pr_str = @implode(""$pr
);

    return 
substr($pr_str,strrpos($pr_str":")+1
);
}
?>


还有后续的更深一步的研究就发现了,php异或运算的不可靠性。但是现在在win的服务器上是可以实现这个google pr值查询的。

相关阅读

本月热门