Получить в ZIP

shift_on_line

Новичок
Получить в ZIP

Как мне получить веб страницу сайта в ZIP?
Чтобы не качать страницу а просто например ввести адрес www.ra654.ru/vac.php?234 и скачать(получить) в архиве файл vac.php
Помогите plz...
 

SiMM

Новичок
1. Если сервер свой - то и создавай соответственно ZIP на сервере. Пользоваться поиском по форуму, использовать либо [m]system[/m], либо готовые классы (ZIPlib || PCLzip).
2. Если сервер не свой, для этого её вначале нужно скачать. Куда скачивать - на другой сервер или пользователю - это уже другой вопрос. Всё остальное - см. п. 1.
 

shift_on_line

Новичок
Никакой из этих методов не может добавить в архив веб станицу, только файл.. Может я что не так сделал?

<?
include "pclzip.lib.php";
$site= "http://rabota.spb.ru/informer.php";
$archive = new PclZip('archive.zip');
$list = $archive->add($site);
?>

<?
include "ziplib.php";
$site= "http://rabota.spb.ru/informer.php";
$write_zip = new ZipWriter('', 'array.zip');
$write_zip->addRegularFile($site, file_get_contents($site));
$write_zip->finish();
?>

Файлы добавляет, а сайт нет, мне надо чтоб он выдовался на скачивание как во втором примере..
Помогите а? ;)

=-=-=

Например указал адрес статьи на другом сайте и получил её в архиве....
 

Alexandre

PHPПенсионер
в ZIP можно запихнуть все что угодно, и первое ты научился делать. Это плюс. Теперь осталось разобраться КАК это надо сделать?

Чтоб запихнуть в ZIP WEB страничку - не достаточно запихать только сам HTML файл в нее, а также нужно как минимум:
Запихать в ЗИП все картинки,
изменить на них ссылки

А что для этого надо:
1) считать HTML страничку
2) пропарсить ее и выделить все <img src="...">xxx</img>
3) вытащить все картинки с локального сервера и запихнуть их в ЗИП
4) если это не локальный сервер - то вытащить и их, т.е. открыть ее как файл, и сохранить во временной директории как файл..., а потом уже с локального сервера записать в ЗИП
5) изменить значения <img src="..."> на локальные пути
ну и в таком духе
 

shift_on_line

Новичок
Alexandre, спасибо конечно за последовательность действий, но для меня это слишком сложно.
Мнебы хватило простого "запихивания html в zip" чтобы его скачать. Просто файлы html могут достигать 10метров и качать всё это болезнено для трафика.
Приведите хотябы простой пример такого получения..
ps/ Я могу получить html через например :
$lines = file ('http://rabota.spb.ru/');
foreach ($lines as $line_num => $line) {echo $line;}
Могу запаковать в zip файл
include "ziplib.php";
$lines = "file.txt";
$write_zip = new ZipWriter('', 'array.zip');
$write_zip->addRegularFile($lines, file_get_contents($lines));
$write_zip->finish();

(эта функция лучше тем что не держит файл на хостинге, хотя не знаю, возможна ли тогда дока4ка... Но это не важно.. Можно и на хостинге, только не много)
Но как получить эту html страницу в Архиве, придумать не могу :(
Мне это надо сделать с минимальными потерями моего трафика и места (но не трафика) хостинг провайдера...
:)
 

fixxxer

К.О.
Партнер клуба
не проще ли пользовать прокси с gzip компрессией? :)
 

Alexandre

PHPПенсионер
Просто файлы html могут достигать 10метров
bи что же это за файлы такие?
Код:
$lines = file ('http://rabota.spb.ru/');
$line_str = '';
foreach ($lines as $line_num => $line) {$line_str .= $line_num;}
$fp = fopen('file.txt', 'w');   /// записываем в файл
  fwrite( $fp,   $line_str , strlen($line_str  )    );  /// лучше выводить блоками по 1024 или 4096 байт
fclose($fp);

// далее делаешь по своему сценарию 
include "ziplib.php";
$lines = "file.txt";
$write_zip = new ZipWriter('', 'array.zip');
$write_zip->addRegularFile($lines, file_get_contents($lines));
$write_zip->finish();
 

shift_on_line

Новичок
Alexandre
Что-то не работат. Архив создаёт, а в файле какието бессмсленные цифры.
Цитата: "012345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667"
И так строчек 10...

-~{}~ 19.10.04 20:03:

Спасибо, я доделал...

<?
//Получение полного кода
$lines = file ('http://rabota.spb.ru/list.php?link=2420&r=res&c=&maxThread=10');
foreach ($lines as $line_num => $line) {$gotov .= $line;}

//Добавление в файл
$fp = fopen('file.txt', 'w');
fwrite( $fp,$gotov);
fclose($fp);

//Добавление в архив
include "pclzip.lib.php";
$archive = new PclZip('archive.zip');
$list = $archive->add('file.txt');
?>

И ещё: Можно ли из полученого html кода вырезать например все тяги <img ...И всё что между ними...</img>
И чтоб оставалось только то что мне надо..
 

Alexandre

PHPПенсионер
Можно ли из полученого html кода вырезать например все тяги <img ...И всё что между ними...</img>
можно все, только надо иметь чуть-чуть мозгов и уметь к этому прикладывать руки.

используй strings, но учи реги (это регулярные выражения. наиболее полная информация о них на www.php.spb.ru или на Деталях php)

алгоритм со стрингсами следующий:
1) ищется и запоминается $pos1 вхождения <img
2) ищется и запоминается $pos2 вхождения </img
3) вырезаем кусок $str1 от 1 до $pos1
4) вырезаем кусок $str2 от $pos2 до конца
5) склеиваем их
6) переходим к пункту 1

можно это же самое сделать более красиво, но так проще.
 

shift_on_line

Новичок
Что-то из всего мало что понял...
Покажи как например из текста "ghgh<b>gh</b>hhgjh<b>hgj</b>"
Получить то что между <b> и </b>
 
Сверху