Mar 19 19. März
Calculate Google Pagerank with PHP Berechnen Sie Google PageRank mit PHP
Monday, March 19th, 2007 Montag, 19. März, 2007This is modified code that I found from the Internet the orginal code that may not work on some server that php has 32bit operation problem and I already tested on my server. Dies ist veränderten Code gefunden, dass ich aus dem Internet den ursprünglichen Code, der möglicherweise nicht auf einige Server, php hat 32-Bit-Betrieb Problem, und ich bereits getestet auf meinem Server.
PHP: PHP:
- <?php <? php
- define ( 'GOOGLE_MAGIC' , 0xE6359A60 ) ; define ( 'GOOGLE_MAGIC ", 0xE6359A60);
- //unsigned shift right / / unsigned nach rechts verschieben
- function zeroFill ( $a , $b ) Funktion zerofill ($ a, $ b)
- { (
- if ( $z & $a ) if ($ z & $ a)
- { (
- $a = ( $a >> 1 ) ; $ a = ($ a>> 1);
- $a &= ( ~ $z ) ; $ a & = (~ $ z);
- $a |= 0x40000000; $ a | = 0x40000000;
- $a = ( $a >> ( $b - 1 ) ) ; $ a = ($ a>> ($ b - 1));
- } )
- else sonst
- { (
- $a = ( $a >> $b ) ; $ a = ($ a>> $ b);
- } )
- return $a ; return $ a;
- } )
- function toInt32 ( & $x ) { Funktion toInt32 (& $ x) (
- $y = ( int ) $x ; $ y = (int) $ x;
- if ( $y ==- $z && $x <- $z ) { if ($ y ==- $ z & & $ x <- $ z) (
- $y = ( int ) ( ( - 1 ) * $x ) ; $ y = (int) ((- 1) * $ x);
- $y = ( - 1 ) * $y ; $ y = (- 1) * $ y;
- } )
- $x = $y ; $ x = $ y;
- } )
- function mix ( $a , $b , $c ) { Funktion Mix ($ a, $ b, $ c) (
- $a -= $b ; $a -= $c ; toInt32 ( $a ) ; $a = ( int ) ( $a ^ ( zeroFill ( $c , 13 ) ) ) ; $ a -= $ b, $ a -= $ c; toInt32 ($ a); $ a = (int) ($ a ^ (zerofill ($ c, 13)));
- $b -= $c ; $b -= $a ; toInt32 ( $b ) ; $b = ( int ) ( $b ^ ( $a << 8 ) ) ; $ b -= $ c, $ b -= $ a; toInt32 ($ b); $ b = (int) ($ b ^ ($ a <<8));
- $c -= $a ; $c -= $b ; toInt32 ( $c ) ; $c = ( int ) ( $c ^ ( zeroFill ( $b , 13 ) ) ) ; -= $ c $ a, $ c -= $ b; toInt32 ($ c); $ c = (int) ($ c ^ (zerofill ($ b, 13)));
- $a -= $b ; $a -= $c ; toInt32 ( $a ) ; $a = ( int ) ( $a ^ ( zeroFill ( $c , 12 ) ) ) ; $ a -= $ b, $ a -= $ c; toInt32 ($ a); $ a = (int) ($ a ^ (zerofill ($ c, 12)));
- $b -= $c ; $b -= $a ; toInt32 ( $b ) ; $b = ( int ) ( $b ^ ( $a << 16 ) ) ; $ b -= $ c, $ b -= $ a; toInt32 ($ b); $ b = (int) ($ b ^ ($ a <<16));
- $c -= $a ; $c -= $b ; toInt32 ( $c ) ; $c = ( int ) ( $c ^ ( zeroFill ( $b , 5 ) ) ) ; -= $ c $ a, $ c -= $ b; toInt32 ($ c); $ c = (int) ($ c ^ (zerofill ($ b, 5)));
- $a -= $b ; $a -= $c ; toInt32 ( $a ) ; $a = ( int ) ( $a ^ ( zeroFill ( $c , 3 ) ) ) ; $ a -= $ b, $ a -= $ c; toInt32 ($ a); $ a = (int) ($ a ^ (zerofill ($ c, 3)));
- $b -= $c ; $b -= $a ; toInt32 ( $b ) ; $b = ( int ) ( $b ^ ( $a << 10 ) ) ; $ b -= $ c, $ b -= $ a; toInt32 ($ b); $ b = (int) ($ b ^ ($ a <<10));
- $c -= $a ; $c -= $b ; toInt32 ( $c ) ; $c = ( int ) ( $c ^ ( zeroFill ( $b , 15 ) ) ) ; -= $ c $ a, $ c -= $ b; toInt32 ($ c); $ c = (int) ($ c ^ (zerofill ($ b, 15)));
- } )
- function GoogleCH ( $url , $length = null , $init =GOOGLE_MAGIC ) { Funktion GoogleCH ($ url, $ length = null, $ init = GOOGLE_MAGIC) (
- } )
- $a = $b = 0x9E3779B9; $ a = $ b = 0x9E3779B9;
- $c = $init ; $ c = $ init;
- $k = 0 ; $ k = 0;
- $len = $length ; $ len = $ length;
- while ( $len >= 12 ) { while ($ len> = 12) (
- $a += ( $url [ $k + 0 ] + ( $url [ $k + 1 ] << 8 ) + ( $url [ $k + 2 ] << 16 ) + ( $url [ $k + 3 ] << 24 ) ) ; $ 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 ) ) ; $ 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 ) ) ; $ c + = ($ url [$ k + 8] + ($ url [$ k + 9] <<8) + ($ url [$ k + 10] <<16) + ($ url [$ k + 11] <<24));
- $mix = mix ( $a , $b , $c ) ; = $ Mix-Mix ($ a, $ b, $ c);
- $a = $mix [ 0 ] ; $b = $mix [ 1 ] ; $c = $mix [ 2 ] ; $ a = $ mix [0]; $ b = $ mix [1]; $ c = $ mix [2];
- $k += 12 ; $ k + = 12;
- $len -= 12 ; $ len -= 12;
- } )
- $c += $length ; $ c + = $ length;
- switch ( $len ) /* all the case statements fall through */ switch ($ len) / * alle der Fall Aussagen fallen durch * /
- { (
- case 11 : $c += ( $url [ $k + 10 ] << 24 ) ; Fall 11: $ c + = ($ url [$ k + 10] <<24);
- case 10 : $c += ( $url [ $k + 9 ] << 16 ) ; Fall 10: $ c + = ($ url [$ k + 9] <<16);
- case 9 : $c += ( $url [ $k + 8 ] << 8 ) ; Fall 9: $ c + = ($ url [$ k + 8] <<8);
- /* the first byte of c is reserved for the length */ / * Das erste Byte von c ist reserviert für die Länge * /
- case 8 : $b += ( $url [ $k + 7 ] << 24 ) ; Fall 8: $ b + = ($ url [$ k + 7] <<24);
- case 7 : $b += ( $url [ $k + 6 ] << 16 ) ; Fall 7: $ b + = ($ url [$ k + 6] <<16);
- case 6 : $b += ( $url [ $k + 5 ] << 8 ) ; Fall 6: $ b + = ($ url [$ k + 5] <<8);
- case 5 : $b += ( $url [ $k + 4 ] ) ; Fall 5: $ b + = ($ url [$ k + 4]);
- case 4 : $a += ( $url [ $k + 3 ] << 24 ) ; Fall 4: $ a + = ($ url [$ k + 3] <<24);
- case 3 : $a += ( $url [ $k + 2 ] << 16 ) ; Fall 3: $ a + = ($ url [$ k + 2] <<16);
- case 2 : $a += ( $url [ $k + 1 ] << 8 ) ; Fall 2: $ a + = ($ url [$ k + 1] <<8);
- case 1 : $a += ( $url [ $k + 0 ] ) ; Fall 1: $ a + = ($ url [$ k + 0]);
- /* case 0: nothing left to add */ / * Case 0: nichts mehr hinzuzufügen * /
- } )
- $mix = mix ( $a , $b , $c ) ; = $ Mix-Mix ($ a, $ b, $ c);
- /*-------------------------------------------- report the result */ /*-------------------------------------------- Bericht das Ergebnis * /
- return $mix [ 2 ] ; return $ Mix [2];
- } )
- //converts a string into an array of integers containing the numeric value of the char / / wandelt eine Zeichenkette in ein Array mit ganzen Zahlen, die den numerischen Wert der char
- function strord ( $string ) { Funktion strord ($ string) (
- for ( $i = 0 ; $i <strlen ( $string ) ; $i ++ ) { for ($ i = 0; $ i <strlen ($ string); $ i + +) (
- } )
- return $result ; return $ result;
- } )
- // converts an array of 32 bit integers into an array with 8 bit values. / / Wandelt ein Array von 32-Bit-Integer in ein Array mit 8-Bit-Werte. Equivalent to (BYTE *)arr32 Entspricht (BYTE *) arr32
- function c32to8bit ( $arr32 ) { Funktion c32to8bit ($ arr32) (
- for ( $i = 0 ; $i <count ( $arr32 ) ; $i ++ ) { for ($ i = 0; $ i <count ($ arr32); $ i + +) (
- for ( $bitOrder = $i * 4 ; $bitOrder <= $i * 4 + 3 ; $bitOrder ++ ) { for ($ bitOrder = $ i * 4; $ bitOrder <= $ i * 4 + 3; $ bitOrder + +) (
- $arr8 [ $bitOrder ] = $arr32 [ $i ] & 255 ; $ arr8 [$ bitOrder] = $ arr32 [$ i] & 255;
- $arr32 [ $i ] =zeroFill ( $arr32 [ $i ] , 8 ) ; $ arr32 [$ i] = zerofill ($ arr32 [$ i], 8);
- } )
- } )
- return $arr8 ; return $ arr8;
- } )
- function get_page_rank ( $url ) { Funktion get_page_rank ($ url) (
- $url = preg_replace ( '/ \? .*$/' , '?' , $url ) ; $ url = preg_replace ( "/ \? .*$/', '?', $ url);
- $reqgr = "info:" . $url ; $ reqgr = "info:". $ url;
- $gch = "6" .GoogleCH ( strord ( $reqgr ) ) ; $ GCH = "6". GoogleCH (strord ($ reqgr));
- if ( ! $fsock ) { if (! $ fsock) (
- return - 1 ; zurück - 1;
- } )
- $base_get = "/search?client=navclient-auto&ch=" . $gch . "&ie=UTF-8&oe=UTF-8&features=Rank:FVN&q=" . $reqgre ; $ base_get = "/ search? client = navclient-auto & ch =". $ GCH. "& ie = UTF-8 & oe = UTF-8 & Features = Rang: FVN & q =". $ reqgre;
- fputs ( $fsock , "HOST: toolbarqueries.google.com \r \n " ) ; fputs ($ fsock, "HOST: toolbarqueries.google.com \ r \ n");
- } )
- if ( preg_match ( '/Rank_.*?:.*?:( \d +)/i' , $res [ 'content' ] , $m ) ) { if (preg_match ( '/ Rank_ .*?:.*?:( \ d +) / i ", $ res [' content '], $ m)) (
- return $m [ 1 ] ; return $ m [1];
- } else { ) Else (
- return - 1 ; zurück - 1;
- } )