> 1); $a &= (~$z); $a |= 0x40000000; $a = ($a >> ($b - 1)); } else { $a = ($a >> $b); } return $a; } // Функция используется при вычислении Google Checksum (см. ниже) function mix($a, $b, $c) { $a -= $b; $a -= $c; $a ^= (zeroFill($c, 13)); $b -= $c; $b -= $a; $b ^= ($a << 8); $c -= $a; $c -= $b; $c ^= (zeroFill($b, 13)); $a -= $b; $a -= $c; $a ^= (zeroFill($c, 12)); $b -= $c; $b -= $a; $b ^= ($a << 16); $c -= $a; $c -= $b; $c ^= (zeroFill($b, 5)); $a -= $b; $a -= $c; $a ^= (zeroFill($c, 3)); $b -= $c; $b -= $a; $b ^= ($a << 10); $c -= $a; $c -= $b; $c ^= (zeroFill($b, 15)); return array($a, $b, $c); } // // Функция, вычисляющая Google Checksum (контрольную сумму Google) // // Входные данные: // $url - URL, для которого требуется определить Google Checksum // $length - длина строки $url (по умолчанию - null, вычисляется в функции) // $init - "волшебное" число // // Выходные данные: // $mix[2] - значение Google Checksum для заданного адреса $url // function GoogleCH($url, $length = null, $init = GOOGLE_MAGIC) { if (is_null($length)) { $length = sizeof($url); } $a = $b = 0x9E3779B9; $c = $init; $k = 0; $len = $length; while($len >= 12) { $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)); $c += ($url[$k + 8] + ($url[$k + 9] << 8) + ($url[$k + 10] << 16) + ($url[$k + 11] << 24)); $mix = mix($a, $b, $c); $a = $mix[0]; $b = $mix[1]; $c = $mix[2]; $k += 12; $len -= 12; } $c += $length; switch ($len) { case 11: $c += ($url[$k + 10] << 24); case 10: $c += ($url[$k + 9] << 16); case 9 : $c += ($url[$k + 8] << 8); // Первый байт $c зарезервирован для значения $length case 8 : $b += ($url[$k + 7] << 24); case 7 : $b += ($url[$k + 6] << 16); case 6 : $b += ($url[$k + 5] << 8); case 5 : $b += ($url[$k + 4]); case 4 : $a += ($url[$k + 3] << 24); case 3 : $a += ($url[$k + 2] << 16); case 2 : $a += ($url[$k + 1] << 8); case 1 : $a += ($url[$k + 0]); } $mix = mix($a, $b, $c); return $mix[2]; } // // Функция, преобразующая строку в массив целых чисел, содержащий числовые // значения каждого символа преобразуемой строки
// // Входные данные: // $string - преобразуемая строка // // Выходные данные: // $result - массив целых чисел, содержащий числовые значения каждого // символа строки $string // function strord($string) { for ($i = 0; $i < strlen($string); $i++) { $result[$i] = ord($string{$i}); } return $result; } // // Функция, определяющая значение Google PageRank (PR) // // Входные данные: // $url - адрес страницы, PageRank которой требуется определить // $prefix - тип получаемых сведений (в данном примере получаем // сведения Google Toolbar - $prefix = "info:") // $datacenter - сервер, с которого требуется получить сведения (по // умолчанию - www.google.com) // // Выходные данные: // $rank - значение PageRank для страницы $url // function getrank($url, $prefix = "info:", $datacenter = "www.google.com") { $url = $prefix.$url; $ch = GoogleCH(strord($url)); // Вычисляем Google Checksum $file = "http://$datacenter/search?client=navclient-auto&ch=6$ch&features=Rank&q=$url"; // Примечание: для получения детализированного результата запроса (в XML // формате) требуется убрать "&features=Rank"; обработка подобного результата // существенно отличается от рассматриваемой обработки результата запроса // и в данном скрипте не рассматривается $olderrorlevel = error_reporting(0); // Временно приостанавливаем выдачу сообщений об ошибках $data = file($file); error_reporting($olderrorlevel); // Устанавливаем предыдущий уровень сообщений об ошибках // Если $data не содержит данных Google или введен неверный URL // Примечание: здесь функция preg_match выполняет роль простого средства, // проверяющего URL на корректность if (!$data || preg_match("/(.*)\.(.*)/i", $url) == 0) return "Нет данных"; $rankarray = explode(':', $data[2]); // Две строчки отделяют значение Google PageRank $rank = trim($rankarray[2]); // Удаляем ненужные пробелы и символы новой строки // Если не удалось определить PageRank if ($rank == "") return "Нет данных"; return $rank; // Вот оно счастье... } ?> PageRank:
ТИЦ:


Введите адрес:


Главная