Mar 19 3月 19日
Calculate Google Pagerank with PHP 計算のGoogle PageRankをPHPで
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.これは私は、いくつかのサーバーは、 phpの32ビット操作問題を抱えていると私はすでにテストサーバー上では動作しない可能性がありますが、元のコードでは、インターネットから見つけたコードを変更されます。
PHP: PHPは:
- <?php < ? phpの
- //unsigned shift right / /符号なし右シフト
- function zeroFill ( $a , $b ) 関数はZEROFILL ( $ 1 、 $ b )の
- { (
- if ( $z & $a ) ( $ Z偉大なる & $場合 )
- { (
- $a = ( $a >> 1 ) ; $ 1 = ( $ 1 > > 1 ) ;
- $a &= ( ~ $z ) ; $ 1 & = ( 〜 $ z )に ;
- $a |= 0x40000000; $ 1 | = 0x40000000 ;
- $a = ( $a >> ( $b - 1 ) ) ; $ 1 = ( $ 1 > > ( $ bの -1 ) ) ;
- } )
- else その他の
- { (
- $a = ( $a >> $b ) ; $ 1 = ( $ 1 > > $ b )の ;
- } )
- return $a ; $ 返します 。
- } )
- function toInt32 ( & $x ) { 関数 toInt32 ( & $のX ) (
- $y = ( int ) $x ; $イ = (内科) $のX ;
- if ( $y ==- $z && $x <- $z ) { もし ( $イ ==- $ Z偉大なる & & $ × < -$ z ) を(
- $y = ( int ) ( ( - 1 ) * $x ) ; $イ = (内科) ( ( -1 ) * $ のX ) ;
- $y = ( - 1 ) * $y ; $イ = ( -1 ) * $ イ;
- } )
- $x = $y ; $ × = $イ ;
- } )
- function mix ( $a , $b , $c ) { 関数ミックス( $ 1 、 $ bの 、 $ 3 ) (
- $a -= $b ; $a -= $c ; toInt32 ( $a ) ; $a = ( int ) ( $a ^ ( zeroFill ( $c , 13 ) ) ) ; $ 1 -= $ bの ; $ 1 -= $ウ ; toInt32 ( $ 1 ) ; $ 1 = (内科) ( $ 1 ^ (ゼロ( $ウ 、 13 ) ) ) ;
- $b -= $c ; $b -= $a ; toInt32 ( $b ) ; $b = ( int ) ( $b ^ ( $a << 8 ) ) ; $ bの -= $ウ ; $ bの -= $ 1 ; toInt32 ( $ b )の ; $ bの = (内科) ( $ bの ^ ( $ 1 < < 8 ) ) ;
- $c -= $a ; $c -= $b ; toInt32 ( $c ) ; $c = ( int ) ( $c ^ ( zeroFill ( $b , 13 ) ) ) ; $ウ -= $ 1 ; $ウ -= $ bの ; toInt32 ( $ 3 ) ; $ウ = (内科) ( $ウ ^ (ゼロ化( 10億ドル 、 13 ) ) ) ;
- $a -= $b ; $a -= $c ; toInt32 ( $a ) ; $a = ( int ) ( $a ^ ( zeroFill ( $c , 12 ) ) ) ; $ 1 -= $ bの ; $ 1 -= $ウ ; toInt32 ( $ 1 ) ; $ 1 = (内科) ( $ 1 ^ (ゼロ( $ウ 、 12 ) ) ) ;
- $b -= $c ; $b -= $a ; toInt32 ( $b ) ; $b = ( int ) ( $b ^ ( $a << 16 ) ) ; $ bの -= $ウ ; $ bの -= $ 1 ; toInt32 ( $ b )の ; $ bの = (内科) ( $ bの ^ ( $ 1 < < 16 ) ) ;
- $c -= $a ; $c -= $b ; toInt32 ( $c ) ; $c = ( int ) ( $c ^ ( zeroFill ( $b , 5 ) ) ) ; $ウ -= $ 1 ; $ウ -= $ bの ; toInt32 ( $ 3 ) ; $ウ = (内科) ( $ウ ^ (ゼロ( $ bの 、 5 ) ) ) ;
- $a -= $b ; $a -= $c ; toInt32 ( $a ) ; $a = ( int ) ( $a ^ ( zeroFill ( $c , 3 ) ) ) ; $ 1 -= $ bの ; $ 1 -= $ウ ; toInt32 ( $ 1 ) ; $ 1 = (内科) ( $ 1 ^ (ゼロ( $ウ 、 3 ) ) ) ;
- $b -= $c ; $b -= $a ; toInt32 ( $b ) ; $b = ( int ) ( $b ^ ( $a << 10 ) ) ; $ bの -= $ウ ; $ bの -= $ 1 ; toInt32 ( $ b )の ; $ bの = (内科) ( $ bの ^ ( $ 1 < < 10 ) ) ;
- $c -= $a ; $c -= $b ; toInt32 ( $c ) ; $c = ( int ) ( $c ^ ( zeroFill ( $b , 15 ) ) ) ; $ウ -= $ 1 ; $ウ -= $ bの ; toInt32 ( $ 3 ) ; $ウ = (内科) ( $ウ ^ (ゼロ化( 10億ドル 、 15 ) ) ) ;
- } )
- function GoogleCH ( $url , $length = null , $init =GOOGLE_MAGIC ) { 関数 GoogleCH ( $ URLを 、 $長 = nullを 、 $のinit = GOOGLE_MAGIC ) (
- if ( is_null ( $length ) ) { ( is_null ( $ 長さ ) ) (
- } )
- $a = $b = 0x9E3779B9; $ 1 = $ bの = 0x9E3779B9 ;
- $c = $init ; $ウ = $ initプロセス ;
- $k = 0 ; $のK = 0 ;
- $len = $length ; $レン = $長さ ;
- while ( $len >= 12 ) { ( $ ながら レン> = 12 ) (
- $a += ( $url [ $k + 0 ] + ( $url [ $k + 1 ] << 8 ) + ( $url [ $k + 2 ] << 16 ) + ( $url [ $k + 3 ] << 24 ) ) ; $ 1 + = ( $ 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 ) ; $ミックス =ミックス( $ 1 、 $ bの 、 $ 3 ) ;
- $a = $mix [ 0 ] ; $b = $mix [ 1 ] ; $c = $mix [ 2 ] ; $ 1 = $ミックス [ 0 ] ; $ bの = $ミックス [ 1 ] ; $ウ = $ミックス [ 2 ] ;
- $k += 12 ; $のK + = 12 ;
- $len -= 12 ; $レン -= 12 ;
- } )
- $c += $length ; $のC + = $長さ ;
- switch ( $len ) /* all the case statements fall through */ スイッチ ( $レン ) / *すべてのcase文*を通じて滝/
- { (
- case 11 : $c += ( $url [ $k + 10 ] << 24 ) ; ケース 11 : $のC + = ( $ URLを [ $のK + 10 ] < < 24 ) ;
- case 10 : $c += ( $url [ $k + 9 ] << 16 ) ; ケース 10 : $のC + = ( $ URLを [ $のK + 9 ] < < 16 ) ;
- case 9 : $c += ( $url [ $k + 8 ] << 8 ) ; ケース 9 : $のC + = ( $ URLを [ $のK + 8 ] < < 8 ) ;
- /* the first byte of c is reserved for the length */ / * Cの最初のバイトの長さを確保されています* /
- case 8 : $b += ( $url [ $k + 7 ] << 24 ) ; ケース 8 : $ bの + = ( $ URLを [ $のK + 7 ] < < 24 ) ;
- case 7 : $b += ( $url [ $k + 6 ] << 16 ) ; ケース 7 : $ bの + = ( $ URLを [ $のK + 6 ] < < 16 ) ;
- case 6 : $b += ( $url [ $k + 5 ] << 8 ) ; ケース 6 : $ bの + = ( $ URLを [ $のK + 5 ] < < 8 ) ;
- case 5 : $b += ( $url [ $k + 4 ] ) ; ケース 5 : $ bの + = ( $ URLを [ $のK + 4 ] ) ;
- case 4 : $a += ( $url [ $k + 3 ] << 24 ) ; ケース 4 : $ 1 + = ( $ URLを [ $のK + 3 ] < < 24 ) ;
- case 3 : $a += ( $url [ $k + 2 ] << 16 ) ; ケース 3 : $ 1 + = ( $ URLを [ $のK + 2 ] < < 16 ) ;
- case 2 : $a += ( $url [ $k + 1 ] << 8 ) ; ケース 2 : $ 1 + = ( $ URLを [ $のK + 1 ] < < 8 ) ;
- case 1 : $a += ( $url [ $k + 0 ] ) ; ケース 1 : $ 1 + = ( $ URLを [ $のK + 0 ] ) ;
- /* case 0: nothing left to add */ / *ケース0 :何も追加する * 左/
- } )
- $mix = mix ( $a , $b , $c ) ; $ミックス =ミックス( $ 1 、 $ bの 、 $ 3 ) ;
- /*-------------------------------------------- report the result */ /*-------------------------------------------- *結果報告書/
- return $mix [ 2 ] ; ミックス$ リターン [ 2 ] ;
- } )
- //converts a string into an array of integers containing the numeric value of the char / /整数値の数値文字を含む文字列の配列に変換する
- function strord ( $string ) { 関数 strord ( $文字列 ) (
- for ( $i = 0 ; $i <strlen ( $string ) ; $i ++ ) {私= 0 ( $ ; $私 < strlen ( $文字列 ) ; $私 + + ) (
- } )
- return $result ; $ 結果 を返す ;
- } )
- // converts an array of 32 bit integers into an array with 8 bit values. / / 8ビットの値を持つ配列に32ビット整数の配列に変換します。 Equivalent to (BYTE *)arr32 当量(バイト* ) arr32
- function c32to8bit ( $arr32 ) { 関数 c32to8bit ( $ arr32 ) (
- for ( $i = 0 ; $i <count ( $arr32 ) ; $i ++ ) {私= 0 ( $ ; $私 < ( $ arr32 ) ; $私 + + ) (
- for ( $bitOrder = $i * 4 ; $bitOrder <= $i * 4 + 3 ; $bitOrder ++ ) {私* 4 $ ( $ bitOrder = ; $ bitOrder < = $私 * 4 + 3 ; $ bitOrder + + ) (
- $arr8 [ $bitOrder ] = $arr32 [ $i ] & 255 ; $ arr8 [ $ bitOrder ] = $ arr32 [ $私 ] & 255 ;
- $arr32 [ $i ] =zeroFill ( $arr32 [ $i ] , 8 ) ; $ arr32 [ $私 ] =ゼロ( $ arr32 [ $私 ] 、 8 ) ;
- } )
- } )
- return $arr8 ; $ arr8 を返す ;
- } )
- function get_page_rank ( $url ) { 関数 get_page_rank ( $のURL ) (
- $url = preg_replace ( '/ \? .*$/' , '?' , $url ) ; $のURL = preg_replace ( ' / \ ? .*$/' 、 'か' 、 $のURL ) ;
- $reqgr = "info:" . $url ; $ reqgr = "インフォメーション: "です。 $ホームページURL ;
- $gch = "6" .GoogleCH ( strord ( $reqgr ) ) ; $ gch = " 6 " 。 GoogleCH ( strord ( $ reqgr ) ) ;
- if ( ! $fsock ) { ( ! $ fsock ) (場合
- return - 1 ; 復帰 -1 ;
- } )
- $base_get = "/search?client=navclient-auto&ch=" . $gch . "&ie=UTF-8&oe=UTF-8&features=Rank:FVN&q=" . $reqgre ; $ base_get = " /検索?クライアント= navclient -自動車& chに= " 。 $ gch 。 " &つまり=のUTF - 8 &大江=はUTF - 8 &特長=ランク: FVN & q =を" 。 $ reqgre ;
- fputs ( $fsock , "HOST: toolbarqueries.google.com \r \n " ) ; fputs ( $ fsock 、 "ホスト: toolbarqueries.google.com \研究\ Ñ " ) ;