php google pr 值代码
下面的代码是一段获取 google pr值,并且还支持js调用显示哦。
<?php // require dirname(__FILE__) . '/MooPHP/MooPHP.php'; define('GMAG', 0xE6359A60); //note 获取和处理可能要取得的变量 //$site = MooGetGPC('site', 'string'); $host = ''; $style = isset($_GET['style']) ? $_GET['style'] : 1; $host = $_SERVER['HTTP_HOST']; $site = str_replace('http://', '', $host); if ($site) { $pr = getPR($site); switch ($style) { case 3: echo 'document.write("<a href=http://tool.phprm.com/pr/pr.php target=_blank><img src=http://tool.phprm.com/pr/primg/a' . $pr . '.png border=0 /></a>");'; break; case 2: echo 'document.write("<a href=http://tool.phprm.com/pr/pr.php target=_blank><img src=http://tool.phprm.com/pr/primg/b' . $pr . '.png border=0 /></a>");'; break; case 1: echo 'document.write("<a href=http://tool.phprm.com/pr/pr.php target=_blank><img src=http://tool.phprm.com/pr/primg/c' . $pr . '.png border=0 /></a>");'; break; default: echo 'document.write("<a href=http://tool.phprm.com/pr/pr.php target=_blank><img src=http://tool.phprm.com/pr/primg/a' . $pr . '.png border=0 /></a>");'; break; } } else { echo '有问题'; } // include MooTemplate("pr_index"); //note 处理获得pr值的函数 // url get method macro. define('G_PR_GET_TYPE_FILE', 1); // use fopen() function define('G_PR_GET_TYPE_SOCKET', 2); // use standard fsocketopen function // main function to be called function getPR($_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://64.233.161.104/search?client=navclient-auto&ch=6" . $ch . "&ie=UTF-8&oe=UTF-8&features=Rank&q=" . $url; $pr_str = retrieveURLContent($googlePRUrl, $gettype); return intval(substr($pr_str, strrpos($pr_str, ":") + 1)); } //unsigned shift right 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; } // discard bits beyonds 32 bit. 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) { //if(function_exists('gmp_init')){ // return floatval(gmp_strval(gmp_xor($m,$n))); //} //else{ 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]; } } // 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 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.0rn" . "Host: " . $host . "rn" . "Accept: */*rn" . "User-Agent: ZealGetrn" . "rn"; $sHnd = @fsockopen($host, $port, $errno, $errstr, $timeout); if (!$sHnd) { return false; } @fputs($sHnd, $request); // Get source $result = ""; while (!feof($sHnd)) { $result.= fgets($sHnd, 4096); } fclose($sHnd); $headerend = strpos($result, "rnrn"); if (is_bool($headerend)) { return $result; } else { return substr($result, $headerend + 4); } }
可以查询你网站的pr值并且还可以调用pr在你网站显示哦。
教程地址:http://www.phprm.com/code/e947d67b0dbf6168b3804e1adbceeb56.html
欢迎转载!但请带上文章地址^^