Народ, как бы мне сделать что-то вароде граббера .т.е. нужен скрипт на пхп, который при заходе на него открывает какую-то определенную страницу и копирует заданную часть строки, типа от <body> до </body>...
PHP: <html> <head><title>Parser</title></head> <body> <form method="POST"> Location of the file: <input type="text" name="url" value="" style="width: 120;height:20;" /><br/></br> Before: <input type="text" name="before" value="" style="width: 60;height:20;" /><br/></br> After: <input type="text" name="after" value="" style="width: 60;height:20;" /><br/></br> <input type="submit" name="end" value="Parse..."/> </form> <?php set_time_limit(0); $url = isset($_POST['url']) ? $_POST['url'] : ''; $before = isset($_POST['before']) ? $_POST['before'] : ''; $after = isset($_POST['after']) ? $_POST['after'] : ''; $end = isset($_POST['end']) ? $_POST['end'] : ''; $file = 'file.txt'; if($end) { if($url && $before && $after) { $ps = file_get_contents($url); $pattern = "#".$before."(.*?)".$after."#is"; preg_match_all($pattern, $ps, $out, PREG_SET_ORDER); foreach($out as $row) { if($handle = fopen($file, 'ab')) { fwrite($handle, $row[1]."\r\n"); fclose($handle); } } } else { echo "Заполните все поля"; } } ?> </body> </html> Вписываешь ссылку в первое поле... Во второе поле вписываешь слово или тэг от которого будет браться все до второго тэга(3 поля) Короче допустим ввели в первое поле: http://www.mail.ru Во второе: <body bgcolor=white topmargin=0 leftmargin=0 rightmargin=0 marginwidth=0 marginheight=0 > В третье: </body> То в файл file.txt запишет все что находится между этими тэгами
Helios, да етма вообще создана не по названия... Сначла вроде было другое название и в другом разщделе.. Перенесли и переименовали тему видимо... Ток к чему.. ВПоолне обычное нахвание должно быть - Парсер
PHP: <? $i=file_get_contents('ссылка на страницу'); preg_match_all("/\<body\>(.*?)\<\/body\>/i",$i,$p); echo $p[1][0]; ?>
на всякий случай он загадочно говорил может он удет использовать другой тег и в каждом нужна будет такая процедура)) Если нет то вот без _all PHP: <? $i=file_get_contents('ссылка на страницу'); preg_match("/\<body\>(.*?)\<\/body\>/i",$i,$p); echo $p[1]; ?>
GreenBear, ну может vizard-06 посчитал что боди может быть не одно на странице... vizard-06, твой скрипт работать не будет т.к. в нашем случае preg_match_all нужен четвертый параметр PREG_SET_ORDER И вывести PHP: print_r($row[1]);
незнаю что там у тебя не работает у меня всё работает например я использую так PHP: <? $bash='<div>рез</div><div>два</div><div>три</div><div>четыре</div><div>пять</div><div>....</div>'; $kol_pars=preg_match_all("/\<div\>(.*?)\<\/div\>/i",$bash,$bash_pars); for($i=0;$i<$kol_pars;$i++) echo $bash_pars[0][$i].'<br>'; ?>
Только не $bash_pars[0][$i], а $bash_pars[1][$i]. С какой радости не будет? И без прег_сет_ордер жизнь прекрасна. В массиве $p[1] будут вхождения первой подмаски, индексом [0] выбирается первое. Это используемый по дефолту тип PREG_PATTERN_ORDER