用php实现Google PageRank PR值在线查询
本文最后更新于 6039 天前,其中的信息可能已经有所发展或是发生改变。

在网上搜索了下,找到个php实现Google PageRank PR值在线查询的代码。
平时自己查查还是比较方便的.

不过貌似在服务器上有点问题,总是不能获得,而本机调试没有问题,不解中,而php的allow_url_fopen 为on,而且file函数测试也成功了,比较诡异,有时间再搞。
Google PR值是什么?请看下面的引用资料

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

<?php

// Edit this to your website url:
$myWebSite = "https://kimi.pub";

define('GMAG', 0xE6359A60);

//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 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]);
        /* 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);
}

echo "<br />The PR of $myWebsite is: ".getPR($myWebSite);
?>

评论

  1. 15年前
    2009-8-12 21:01:55

    你用的是这份代码吧?
    http://www.pagerankcode.com/download-script.html
    好多<变形了。。

    另外,我用它的接口查,返回的都是-1是怎么回事?

    • 博主
      Hily
      15年前
      2009-9-05 16:46:02

      @Hily, 这份代码已经过期了,其中的google查询服务器地址不对,需要重新核实的说。

  2. 10年前
    2014-1-08 11:27:06

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇