<?php
define('_IN_JOHNCMS', 1);
$headmod ="";
$textl = '';
require_once ("../incfiles/core.php");
require_once ("../incfiles/head.php");
header("Content-type:text/html; charset=utf-8");
Начало положено, приступим непосредственно к грабберу. Сначала нам нужно запросить данные с этой страницы, так? Вот…я покажу вам как это сделать:
$file = file_get_contents("http://sotoz.ru/nightlife/superchart/superchart.php?".$_SERVER['QUERY_STRING']);
Обьяснять вам что это за код, я вам здесь не буду, дабы не забивать лишним голову. Вы увидели куда я вставил адрес страницы? Отлично. Вам это нужно будет сделать точно также по моему примеру. Если вы вставите этот код к себе в страницу (естественно вставив ноги, смотреть нижу), то у вас на сайте получится страница, с точностью как у меня, с дизайном и т.д. Естественно нам это не надо, что мы делаем? Правильно, вырезаем то, что нам не нужно, для этого сканируем страницу, в данном случае это http://sotoz.ru/nightlife/supe ... t.php посмотреть исходный код её, вы можете здесь. Мы видим перед собой исходный код этой страницы. Нам нужно вырезать всё, что до слов «SUPERCHART #113 от 07.11.2009», и так как мы это сделаем? Давайте посмотрим на примере:
$file=preg_replace('/<?xml(.*?)<div class=\"mainmenu\">/si','',$file);
Не пугайтесь, сейчас всё обьясню. Вот этим действием мы с вами вырезали абсолютно всю шапку! Теперь по подробней: когда вы смотрели исходный код стриницы, с чего он начинался?? Именно с:
<?xml …тут дальше идут код шапки… а закончим шапку мы вот этим.. <div class="mainmenu">
Всё что между ними, то есть заключено в (.*?) убирается! Вот так просто, главное видеть код, видеть за что можно зацепиться. Вы спросите а почему я написал <div class=\"mainmenu\"> со слешами? Тут есть одна хитрость, в функции preg_replace() если встречается слеш (/) или двойные ковычки ("), то мы их как бы убираем вот этим знаком (\), покажу на примере: вы убираете адрес http://sotoz.ru если просто вставить его в функцию, то страница выдаст вам ошибку, но если же вы вставите её так http:\/ \/sotoz.ru то программа выдаст вам положительный результат, абсолютно так же и с двойными ковычками, допустим вы хотите начать вырезать с $file=preg_replace('/\"автомобиль\"(.*?)<div class=\"mainmenu\">/si','',$file); уловили да?) Вот так всё просто. Аналогичным образом вырезаем и низ страницы:
$file=preg_replace('/<\/div><small>(.*?)<\/html>/si','',$file);
Внизу мы зацепились за </div><small> так как в коде больше таких аналогов не встречается, и программа нашла где именно находится такая комбинация и до </html> всё вырезало.
Теперь вы спросите, вверху страницы написано «Рекорд» на SotoZ.Ru, вам оно не надо…есть ещё одна замечательная функция, которая исполняется вот так:
$file = str_replace('SotoZ.Ru', 'Твой сайт.ру', $file);
Здесь думаю из примеа всё ясно, функция заменяет одни ковычки, на другие, то есть в первых ковычках вы пишите то, что хотите вырезать, а в других то, на что хотите заменить. Не важно, будет ли это ваш сайт хоть пишите «Привет мама, папа», разницы нет, или же можете вторые ковычки оставить пустыми, тогда надпись SotoZ.Ru просто напросто исчезнет. Теперь переходим к следующему этапу. Граб написан, вроде всё работает, но вот одна незадача, когда пытаюсь скачать песню, мне выкидывает ошибку потому что файл расположен не у меня на сайте, а на исходном. Сейчас мы решим эту проблему опять же с помощью замечательной функции str_replace(); вот так это делается:
$file = str_replace('</b><a href="', '</b><a href="http://sotoz.ru/nightlife/superchart/', $file);
Здесь мы заменили начало ссылки на начало ссылки и адрес в которой папке лежит сайт! То есть когда вы будете скачивать файл, он будет запрашиваться с сервера где он лежит=)
Вот и подготовили мы граб, теперь выводим его:
echo $file;
Вот таким простым способом! Так делается всегда.
Теперь конечно же ставим ноги от двига:
require_once ("../../incfiles/end.php");
?>
Вот на этом я и завершаю написание. Думаю тема жить будет, так как юзеры просили создать такую тему, здесь можно выкладывать полезные функции для грабов, какими вы пользуетесь и т.д. Спасибо за внимание)