Archive for the 'Programming' Category Archiv für die 'Programmierung' Kategorie

Calculate Google Pagerank with PHP Berechnen Sie Google PageRank mit PHP

Monday, March 19th, 2007 Montag, 19. März, 2007

This 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:
  1. <?php <? php
  2. define ( 'GOOGLE_MAGIC' , 0xE6359A60 ) ; define ( 'GOOGLE_MAGIC ", 0xE6359A60);
  3. //unsigned shift right / / unsigned nach rechts verschieben
  4. function zeroFill ( $a , $b ) Funktion zerofill ($ a, $ b)
  5. { (
  6. $z = hexdec ( 80000000 ) ; $ z = hexdec (80000000);
  7. if ( $z & $a ) if ($ z & $ a)
  8. { (
  9. $a = ( $a >> 1 ) ; $ a = ($ a>> 1);
  10. $a &= ( ~ $z ) ; $ a & = (~ $ z);
  11. $a |= 0x40000000; $ a | = 0x40000000;
  12. $a = ( $a >> ( $b - 1 ) ) ; $ a = ($ a>> ($ b - 1));
  13. } )
  14. else sonst
  15. { (
  16. $a = ( $a >> $b ) ; $ a = ($ a>> $ b);
  17. } )
  18. return $a ; return $ a;
  19. } )
  20. function toInt32 ( & $x ) { Funktion toInt32 (& $ x) (
  21. $z = hexdec ( 80000000 ) ; $ z = hexdec (80000000);
  22. $y = ( int ) $x ; $ y = (int) $ x;
  23. if ( $y ==- $z && $x <- $z ) { if ($ y ==- $ z & & $ x <- $ z) (
  24. $y = ( int ) ( ( - 1 ) * $x ) ; $ y = (int) ((- 1) * $ x);
  25. $y = ( - 1 ) * $y ; $ y = (- 1) * $ y;
  26. } )
  27. $x = $y ; $ x = $ y;
  28. } )
  29. function mix ( $a , $b , $c ) { Funktion Mix ($ a, $ b, $ c) (
  30. $a -= $b ; $a -= $c ; toInt32 ( $a ) ; $a = ( int ) ( $a ^ ( zeroFill ( $c , 13 ) ) ) ; $ a -= $ b, $ a -= $ c; toInt32 ($ a); $ a = (int) ($ a ^ (zerofill ($ c, 13)));
  31. $b -= $c ; $b -= $a ; toInt32 ( $b ) ; $b = ( int ) ( $b ^ ( $a << 8 ) ) ; $ b -= $ c, $ b -= $ a; toInt32 ($ b); $ b = (int) ($ b ^ ($ a <<8));
  32. $c -= $a ; $c -= $b ; toInt32 ( $c ) ; $c = ( int ) ( $c ^ ( zeroFill ( $b , 13 ) ) ) ; -= $ c $ a, $ c -= $ b; toInt32 ($ c); $ c = (int) ($ c ^ (zerofill ($ b, 13)));
  33. $a -= $b ; $a -= $c ; toInt32 ( $a ) ; $a = ( int ) ( $a ^ ( zeroFill ( $c , 12 ) ) ) ; $ a -= $ b, $ a -= $ c; toInt32 ($ a); $ a = (int) ($ a ^ (zerofill ($ c, 12)));
  34. $b -= $c ; $b -= $a ; toInt32 ( $b ) ; $b = ( int ) ( $b ^ ( $a << 16 ) ) ; $ b -= $ c, $ b -= $ a; toInt32 ($ b); $ b = (int) ($ b ^ ($ a <<16));
  35. $c -= $a ; $c -= $b ; toInt32 ( $c ) ; $c = ( int ) ( $c ^ ( zeroFill ( $b , 5 ) ) ) ; -= $ c $ a, $ c -= $ b; toInt32 ($ c); $ c = (int) ($ c ^ (zerofill ($ b, 5)));
  36. $a -= $b ; $a -= $c ; toInt32 ( $a ) ; $a = ( int ) ( $a ^ ( zeroFill ( $c , 3 ) ) ) ; $ a -= $ b, $ a -= $ c; toInt32 ($ a); $ a = (int) ($ a ^ (zerofill ($ c, 3)));
  37. $b -= $c ; $b -= $a ; toInt32 ( $b ) ; $b = ( int ) ( $b ^ ( $a << 10 ) ) ; $ b -= $ c, $ b -= $ a; toInt32 ($ b); $ b = (int) ($ b ^ ($ a <<10));
  38. $c -= $a ; $c -= $b ; toInt32 ( $c ) ; $c = ( int ) ( $c ^ ( zeroFill ( $b , 15 ) ) ) ; -= $ c $ a, $ c -= $ b; toInt32 ($ c); $ c = (int) ($ c ^ (zerofill ($ b, 15)));
  39. return array ( $a , $b , $c ) ; return array ($ a, $ b, $ c);
  40. } )
  41. function GoogleCH ( $url , $length = null , $init =GOOGLE_MAGIC ) { Funktion GoogleCH ($ url, $ length = null, $ init = GOOGLE_MAGIC) (
  42. if ( is_null ( $length ) ) { if (is_null ($ length)) (
  43. $length = sizeof ( $url ) ; $ length = sizeof ($ url);
  44. } )
  45. $a = $b = 0x9E3779B9; $ a = $ b = 0x9E3779B9;
  46. $c = $init ; $ c = $ init;
  47. $k = 0 ; $ k = 0;
  48. $len = $length ; $ len = $ length;
  49. while ( $len >= 12 ) { while ($ len> = 12) (
  50. $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));
  51. $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));
  52. $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));
  53. $mix = mix ( $a , $b , $c ) ; = $ Mix-Mix ($ a, $ b, $ c);
  54. $a = $mix [ 0 ] ; $b = $mix [ 1 ] ; $c = $mix [ 2 ] ; $ a = $ mix [0]; $ b = $ mix [1]; $ c = $ mix [2];
  55. $k += 12 ; $ k + = 12;
  56. $len -= 12 ; $ len -= 12;
  57. } )
  58. $c += $length ; $ c + = $ length;
  59. switch ( $len ) /* all the case statements fall through */ switch ($ len) / * alle der Fall Aussagen fallen durch * /
  60. { (
  61. case 11 : $c += ( $url [ $k + 10 ] << 24 ) ; Fall 11: $ c + = ($ url [$ k + 10] <<24);
  62. case 10 : $c += ( $url [ $k + 9 ] << 16 ) ; Fall 10: $ c + = ($ url [$ k + 9] <<16);
  63. case 9 : $c += ( $url [ $k + 8 ] << 8 ) ; Fall 9: $ c + = ($ url [$ k + 8] <<8);
  64. /* the first byte of c is reserved for the length */ / * Das erste Byte von c ist reserviert für die Länge * /
  65. case 8 : $b += ( $url [ $k + 7 ] << 24 ) ; Fall 8: $ b + = ($ url [$ k + 7] <<24);
  66. case 7 : $b += ( $url [ $k + 6 ] << 16 ) ; Fall 7: $ b + = ($ url [$ k + 6] <<16);
  67. case 6 : $b += ( $url [ $k + 5 ] << 8 ) ; Fall 6: $ b + = ($ url [$ k + 5] <<8);
  68. case 5 : $b += ( $url [ $k + 4 ] ) ; Fall 5: $ b + = ($ url [$ k + 4]);
  69. case 4 : $a += ( $url [ $k + 3 ] << 24 ) ; Fall 4: $ a + = ($ url [$ k + 3] <<24);
  70. case 3 : $a += ( $url [ $k + 2 ] << 16 ) ; Fall 3: $ a + = ($ url [$ k + 2] <<16);
  71. case 2 : $a += ( $url [ $k + 1 ] << 8 ) ; Fall 2: $ a + = ($ url [$ k + 1] <<8);
  72. case 1 : $a += ( $url [ $k + 0 ] ) ; Fall 1: $ a + = ($ url [$ k + 0]);
  73. /* case 0: nothing left to add */ / * Case 0: nichts mehr hinzuzufügen * /
  74. } )
  75. $mix = mix ( $a , $b , $c ) ; = $ Mix-Mix ($ a, $ b, $ c);
  76. /*-------------------------------------------- report the result */ /*-------------------------------------------- Bericht das Ergebnis * /
  77. return $mix [ 2 ] ; return $ Mix [2];
  78. } )
  79. //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
  80. function strord ( $string ) { Funktion strord ($ string) (
  81. for ( $i = 0 ; $i <strlen ( $string ) ; $i ++ ) { for ($ i = 0; $ i <strlen ($ string); $ i + +) (
  82. $result [ $i ] = ord ( $string { $i } ) ; $ result [$ i] = ord ($ string ($ i));
  83. } )
  84. return $result ; return $ result;
  85. } )
  86. // 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
  87. function c32to8bit ( $arr32 ) { Funktion c32to8bit ($ arr32) (
  88. for ( $i = 0 ; $i <count ( $arr32 ) ; $i ++ ) { for ($ i = 0; $ i <count ($ arr32); $ i + +) (
  89. for ( $bitOrder = $i * 4 ; $bitOrder <= $i * 4 + 3 ; $bitOrder ++ ) { for ($ bitOrder = $ i * 4; $ bitOrder <= $ i * 4 + 3; $ bitOrder + +) (
  90. $arr8 [ $bitOrder ] = $arr32 [ $i ] & 255 ; $ arr8 [$ bitOrder] = $ arr32 [$ i] & 255;
  91. $arr32 [ $i ] =zeroFill ( $arr32 [ $i ] , 8 ) ; $ arr32 [$ i] = zerofill ($ arr32 [$ i], 8);
  92. } )
  93. } )
  94. return $arr8 ; return $ arr8;
  95. } )
  96. function get_page_rank ( $url ) { Funktion get_page_rank ($ url) (
  97. $url = preg_replace ( '/ \? .*$/' , '?' , $url ) ; $ url = preg_replace ( "/ \? .*$/', '?', $ url);
  98. $reqgr = "info:" . $url ; $ reqgr = "info:". $ url;
  99. $reqgre = "info:" . urlencode ( $url ) ; $ reqgre = "info:". urlencode ($ url);
  100. $gch = "6" .GoogleCH ( strord ( $reqgr ) ) ; $ GCH = "6". GoogleCH (strord ($ reqgr));
  101. $fsock = fsockopen ( 'toolbarqueries.google.com' , 80 , $errno , $errstr ) ; $ fsock = fsockopen ( 'toolbarqueries.google.com ", 80, $ errno, $ errstr);
  102. if ( ! $fsock ) { if (! $ fsock) (
  103. echo 'Can not connect to server' ; echo "Kann keine Verbindung zum Server";
  104. return - 1 ; zurück - 1;
  105. } )
  106. $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;
  107. fputs ( $fsock , "GET $base_get HTTP/1.1 \r \n " ) ; fputs ($ fsock, "GET $ base_get HTTP/1.1 \ r \ n");
  108. fputs ( $fsock , "HOST: toolbarqueries.google.com \r \n " ) ; fputs ($ fsock, "HOST: toolbarqueries.google.com \ r \ n");
  109. fputs ( $fsock , "User-Agent: Mozilla/4.0 (compatible; GoogleToolbar 2.0.114-big; Windows XP 5.1) \r \n " ) ; fputs ($ fsock, "User-Agent: Mozilla/4.0 (compatible; GoogleToolbar 2.0.114-big; Windows XP 5.1) \ r \ n");
  110. fputs ( $fsock , "Connection: close \r \n \r \n " ) ; fputs ($ fsock, "Connection: close \ r \ n \ r \ n");
  111. while ( ! feof ( $fsock ) ) { while (! FEOF ($ fsock)) (
  112. $res [ 'content' ] .= fread ( $fsock , 1024 ) ; $ res [ 'content'] .= fread ($ fsock, 1024);
  113. } )
  114. fclose ( $fsock ) ; fclose ($ fsock);
  115. if ( preg_match ( '/Rank_.*?:.*?:( \d +)/i' , $res [ 'content' ] , $m ) ) { if (preg_match ( '/ Rank_ .*?:.*?:( \ d +) / i ", $ res [' content '], $ m)) (
  116. return $m [ 1 ] ; return $ m [1];
  117. } else { ) Else (
  118. return - 1 ; zurück - 1;
  119. } )