Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

10.07.2007, 13:13
|
|
Участник форума
Регистрация: 04.05.2007
Сообщений: 267
Провел на форуме: 409147
Репутация:
33
|
|
php, сессия, копирование
Народ, как бы мне сделать что-то вароде граббера .т.е. нужен скрипт на пхп, который при заходе на него открывает какую-то определенную страницу и копирует заданную часть строки, типа от <body> до </body>...
|
|
|

10.07.2007, 13:27
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
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 запишет все что находится между этими тэгами
|
|
|

11.07.2007, 17:43
|
|
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме: 1469995
Репутация:
589
|
|
эм... а причем тут сессия?
|
|
|

11.07.2007, 17:46
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
Helios, да етма вообще создана не по названия...
Сначла вроде было другое название и в другом разщделе..
Перенесли и переименовали тему видимо...
Ток к чему..
ВПоолне обычное нахвание должно быть - Парсер
|
|
|

15.07.2007, 02:24
|
|
Познающий
Регистрация: 06.12.2006
Сообщений: 57
Провел на форуме: 418176
Репутация:
31
|
|
PHP код:
<?
$i=file_get_contents('ссылка на страницу');
preg_match_all("/\<body\>(.*?)\<\/body\>/i",$i,$p);
echo $p[1][0];
?>
|
|
|

15.07.2007, 03:02
|
|
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме: 19975136
Репутация:
4536
|
|
а зачем _all?
|
|
|

15.07.2007, 03:07
|
|
Познающий
Регистрация: 06.12.2006
Сообщений: 57
Провел на форуме: 418176
Репутация:
31
|
|
Сообщение от GreenBear
а зачем _all?
на всякий случай он загадочно говорил может он удет использовать другой тег и в каждом нужна будет такая процедура))
Если нет то вот без _all
PHP код:
<?
$i=file_get_contents('ссылка на страницу');
preg_match("/\<body\>(.*?)\<\/body\>/i",$i,$p);
echo $p[1];
?>
|
|
|

15.07.2007, 03:08
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
GreenBear, ну может vizard-06 посчитал что боди может быть не одно на странице...
vizard-06, твой скрипт работать не будет т.к. в нашем случае preg_match_all нужен четвертый параметр PREG_SET_ORDER
И вывести
|
|
|

15.07.2007, 03:17
|
|
Познающий
Регистрация: 06.12.2006
Сообщений: 57
Провел на форуме: 418176
Репутация:
31
|
|
Сообщение от Isis
GreenBear, ну может vizard-06 посчитал что боди может быть не одно на странице...
vizard-06, твой скрипт работать не будет т.к. в нашем случае preg_match_all нужен четвертый параметр PREG_SET_ORDER
И вывести
незнаю что там у тебя не работает у меня всё работает например я использую так
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>';
?>

|
|
|

15.07.2007, 09:13
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
for($i=0;$i<$kol_pars;$i++)
echo $bash_pars[0][$i].'<br>';
Только не $bash_pars[0][$i], а $bash_pars[1][$i].
Сообщение от Isis
vizard-06, твой скрипт работать не будет т.к. в нашем случае preg_match_all нужен четвертый параметр PREG_SET_ORDER
И вывести
С какой радости не будет? И без прег_сет_ордер жизнь прекрасна.
В массиве $p[1] будут вхождения первой подмаски, индексом [0] выбирается первое.
Это используемый по дефолту тип PREG_PATTERN_ORDER
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|