Сайт:

Фраза:


0) { switch($server) { // В зависимости от поисковой системы формируются результаты // мониторинга поисковой системы. // Функция pattern() возвращает результаты параметры для // регулярного выражения, с помощью которого будет производится // поиск номера позиции сайта сайта в тексте // страницы поисковой системы. // Функция findposition() возвращает номер позиции сайта case YANDEX: // Вывод информации о странице echo "Ссылка на сайт найдена на странице: ". ($numberpage+1)."
"; echo "Перейти по ссылке: Яндекс
"; // Определение и вывод позиции запроса list($startpattern, $endpattern) = pattern(YANDEX); echo "
Позиция: ". findposition($server, $site, $text, $startpattern, $endpattern); break; case APORT: // Вывод информации о странице echo "Ссылка на сайт найдена на странице: ". ($numberpage+1)."
"; echo "Перейти по ссылке: Апорт
"; // Определение и вывод позиции запроса list($startpattern, $endpattern) = pattern(APORT); echo "
Позиция: ". findposition($server, $site, $text, $startpattern, $endpattern); break; case RAMBLER: // Преобразовываем ссылку для решения проблем с кодировками $phrase = rawurlencode(convert_cyr_string( rawurldecode($phrase),"k","w")); $endstr = str_replace("%20","+",$phrase); $strurl=geturl($numberpage,$endstr,$server); // Вычисляем страницу, на которой находится запрашиваемый сайт $numberpage = $numberpage/15; $numberpage = (int)$numberpage; if($numberpage % 15 == 0 && $numberpage>15) $numberpage++; echo "Ссылка на сайт найдена на странице:".($numberpage+1)."
"; // Выводим ссылку на страницу echo "Перейти по ссылке: Рамблер
"; // Определение и вывод позиции запроса list($startpattern, $endpattern) = pattern(RAMBLER); echo "
Позиция: ".findposition($server, $site, $text, $startpattern, $endpattern); // Так как ссылка на искомый сайт найдена, то просмотр страниц // поисковых систем в цикле While можно прекратить break; } } else { echo "На $total первых страницах ссылка на сайт отсутствует"; echo($total); } } function geturl($numberpage,$endstr,$server) { if($server == YANDEX) return "http://www.yandex.ru/yandpage?q=818836167&p=$numberpage&ag=d&rpt=rad&qs=text%3D".$endstr; if($server == RAMBLER) return "http://search.rambler.ru/srch?words=".$endstr."&start=".$numberpage; if($server == APORT) return "http://sm.aport.ru/scripts/template.dll?r=".$endstr."&That=std&p=".$numberpage."&HID=1_2_3_4_5_6_7_8_9_10_11_12_13"; return ""; } function openpage($link) { // Функция fopen() открывает файл для чтения и возвращает // указатель файла. $fd = fopen($link, "r"); $text=""; if (!$fd) echo "Запрашиваемая страница не найдена"; else { // Чтение содержимого файла в переменную text while (!feof ($fd)) { $text .= fgets($fd, 4096); } } // Закрыть открытый указатель файла fclose ($fd); return $text; } function findsite($site, $text) { preg_match_all("/$site/iU", $text, $arr); return $arr; } function pattern($typepattern) { switch($typepattern) { case YANDEX: return array("
  • \D*", "[^!]*<\/A>"); break; case APORT: return array("", ""); break; case RAMBLER: return array("
  • "); break; } } // Функция findposition() определяет позицию искомого сайта на странице // c результатами поиска в поисковой системе. // Передаваемые параметры: // server — имя поисковой системы // site — имя искомого сайта // text — содержимое страницы c результатами поиска в поисковой системе // startpattern и endpattern — параметры для регулярного выражения, они // определяются функцией pattern()(листинг 15.5). function findposition($server, $site, $text, $startpattern, $endpattern) { switch($server) { // Поиск позиции сайта в тексте страницы. // Для каждой поисковой системы применяется свой алгоритм поиска case YANDEX: // Регулярное выражение, осуществляющее поиск позиции сайта preg_match_all("/$startpattern.$site.$endpattern/iU",$text,$arr); preg_match_all("/\d{1,3}>/iU",$arr[0][0],$position); $numberposition = substr($position[0][0], 0, strlen($position[0][0]-1)); return $numberposition; case APORT: $pos = strpos($text,$site); $text = substr($text,0,$pos); while(true) { $pos = strpos($text,""); // Число символов в вырезаемой строке $lenght = strpos($text,""); $lenght = $lenght - $pos - 15; // Получаем позицию return substr($text,$pos+15,$lenght); case RAMBLER: $pos = strpos($text,"
      "); $posend = @strpos($text,"
    1. ",($pos+15)); $yes = strpos(substr($text,$pos,($posend-$pos)),$site); if($yes > 0) break; else $text = substr($text,$posend-1); $pos_begin++; } return $pos_begin; default: return array("
      ", "<\/div>"); } } echo ("
      all $all
      "); echo ("total $total
      "); ?>