说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

PHP获取Google PR值

HTML文档下载 WORD文档下载 PDF文档下载
这是获取Google PR值的PHP实现版本,经过测试运行正常。

下载源代码

 

这是获取Google PR值的PHP实现版本,经过测试运行正常。将下面代码保存为googlepr.php则读取www.okbase.net网站的PR值调用格式为:

googlepr.php?url=www.okbase.net

 

代码如下:

 

<?php//PageRank Lookup v1.1 by HM2K (update: 31/01/07)//based on an alogoritham found here: http://pagerank.gamesaga.net///settings - host and user agent$googlehost='toolbarqueries.google.com';$googleua='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5';//字符串转换到32位整数function StrToNum($Str, $Check, $Magic) {    $Int32Unit = 4294967296;  // 2^32    $length = strlen($Str);    for ($i = 0; $i < $length; $i++) {        $Check *= $Magic; 	        //If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31),         //  the result of converting to integer is undefined        //  refer to http://www.php.net/manual/en/language.types.integer.php        if ($Check >= $Int32Unit) {            $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));            //if the check less than -2^31            $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;        }        $Check += ord($Str{$i});     }    return $Check;}//将URL进行哈希编码function HashURL($String) {    $Check1 = StrToNum($String, 0x1505, 0x21);    $Check2 = StrToNum($String, 0, 0x1003F);    $Check1 >>= 2; 	    $Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);    $Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);    $Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);		    $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );    $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );	    return ($T1 | $T2);}//为哈希字符串生成校验码function CheckHash($Hashnum) {    $CheckByte = 0;    $Flag = 0;    $HashStr = sprintf('%u', $Hashnum) ;    $length = strlen($HashStr);	    for ($i = $length - 1;  $i >= 0;  $i --) {        $Re = $HashStr{$i};        if (1 === ($Flag % 2)) {                          $Re += $Re;                 $Re = (int)($Re / 10) + ($Re % 10);        }        $CheckByte += $Re;        $Flag ++;	    }    $CheckByte %= 10;    if (0 !== $CheckByte) {        $CheckByte = 10 - $CheckByte;        if (1 === ($Flag % 2) ) {            if (1 === ($CheckByte % 2)) {                $CheckByte += 9;            }            $CheckByte >>= 1;        }    }    return '7'.$CheckByte.$HashStr;}//返回pagerank哈希校验码function getch($url) { return CheckHash(HashURL($url)); }//返回PR值function getpr($url) {	global $googlehost,$googleua;	$ch = getch($url);	$fp = fsockopen($googlehost, 80, $errno, $errstr, 30);	if ($fp) {	   $out = "GET /search?client=navclient-auto&ch=$ch&features=Rank&q=info:$url HTTP/1.1\r\n";	   //echo "<pre>$out</pre>\n"; //debug only	   $out .= "User-Agent: $googleua\r\n";	   $out .= "Host: $googlehost\r\n";	   $out .= "Connection: Close\r\n\r\n";		   fwrite($fp, $out);	   	   //$pagerank = substr(fgets($fp, 128), 4); //debug only	   //echo $pagerank; //debug only	   while (!feof($fp)) {			$data = fgets($fp, 128);			//echo $data;			$pos = strpos($data, "Rank_");			if($pos === false){} else{				$pr=substr($data, $pos + 9);				$pr=trim($pr);				$pr=str_replace("\n",'',$pr);				return $pr;			}	   }	   //else { echo "$errstr ($errno)<br />\n"; } //debug only	   fclose($fp);	}}//生成pagerank图形function pagerank($url,$width=40,$method='style') {	if (!preg_match('/^(http:\/\/)?([^\/]+)/i', $url)) { $url='http://'.$url; }	$pr=getpr($url);	$pagerank="PageRank: $pr/10";	//The (old) image method	if ($method == 'image') {	$prpos=$width*$pr/10;	$prneg=$width-$prpos;	$html='<img src="http://www.google.com/images/pos.gif" width='.$prpos.' height=4 border=0 alt="'.$pagerank.'"><img src="http://www.google.com/images/neg.gif" width='.$prneg.' height=4 border=0 alt="'.$pagerank.'">';	}	//The pre-styled method	if ($method == 'style') {	$prpercent=100*$pr/10;	$html='<div style="position: relative; width: '.$width.'px; padding: 0; background: #D9D9D9;"><strong style="width: '.$prpercent.'%; display: block; position: relative; background: #5EAA5E; text-align: center; color: #333; height: 4px; line-height: 4px;"><span></span></strong></div>';	}		$out='<a href="'.$url.'" title="'.$pagerank.'">'.$html.'</a>';	return $out;}if ((!isset($_POST['url'])) && (!isset($_GET['url']))) { echo '<form action="" method="post"><input name="url" type="text"><input type="submit" name="Submit" value="Get Pagerank"></form>'; }if (isset($_REQUEST['url'])) { echo pagerank($_REQUEST['url']); }?>

 

 

Android中文短信开发技巧 Android来电号码获取代码 Android AIDL初学者必看内容 Android与XML解析 Android天气预报程序开发实例与定位信息 如何实现反色? 紧急求助:怎样取表中最后一个id值?(id类型为int) 笑话大全~~~~看了不后悔 小问一个,快来接分 如何在windows的桌面上创建个按钮? 28句男生最爱说的谎言 有人能详细解释一下串口通信中的COMMTIMEOUTS 结构吗? 为什么我的IIS用了几个小时之后,就会无源无故的断开链接 今天库.rdb 是什么类型的数据库! 用SQL 怎么导入! 若把分式x+y/2xy中的x,y分别扩大3倍且x+ 给定一列分式,y/x^3,-y^2/x^5,y^3 3/4+5/7-1 =21/28+15/28.为什 x等于4时,y等于10.5,x等于7时,y等于15 已知x:Y:Z等于3:4:7且2x-y-z=-18 已知X:Y:Z=3:4:7且2X-Y+Z=-18求 |2x-y+1|+(x+2y-7)的平方等于0,则 已知x不等于y,且x的平方-x=13,y的平方-y 已知x+y等于1,x-y等于7,求x的平方+y的平 土耳其出动战机拦截叙利亚战机马尔代夫总统重申绝不允许外部势力干涉养老金双轨制改革几无进展 顶层设计两媒体称农村剩余劳力几近枯竭 议价权向延迟退休已“等不起”?专家观点有共识五一小长假锁定国内高铁游上两名台湾游客在日本遭野鹿冲撞跌倒受伤托里住村干部住基层纳建言领好“火车头2014年加个名字有多难溯魂修真学社罗罗娜的异世之旅不想放手千帆竟过河源旅游台南旅游秦岭旅游昌平旅游龙胜旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘