Сохранить текущую страницу как HTML на сервер

Какой подход мог бы кто-нибудь предложить для сохранения текущей страницы в виде HTML-файла на сервере? В этом случае также обратите внимание, что безопасность не является проблемой.

Я провел бесконечные часы в поисках этого и не нашел ни одной вещи.

Ваша помощь очень ценится, спасибо!

Изменить

Спасибо всем за вашу помощь, это было очень ценно.


person Community    schedule 23.09.2010    source источник
comment
вы задали тот же вопрос всего 14 часов назад: [Сохранение источника себя (PHP)] - почему бы вам не попытаться получить ответ там, а не публиковать его снова? (stackoverflow.com/questions/3769504/saving-source-of-self-php)   -  person oezi    schedule 23.09.2010
comment
oezi - Что ж, похоже, я был прав, создавая этот новый вопрос. Я получил правильный ответ... Новый вопрос, другие люди, другие ответы. Вы можете пойти дальше и закрыть этот вопрос сейчас.   -  person    schedule 23.09.2010
comment
Эти вопросы не совсем одинаковы. Они очень похожи, но отличаются целью: здесь это сервер, в другом вопросе — сам браузер.   -  person nalply    schedule 04.08.2012


Ответы (6)


Если вы имели в виду сохранение вывода страницы в файл, вы можете использовать для этого буферизацию. Вам нужно использовать следующие функции: ob_start и ob_get_contents.

<?php
// Start the buffering //
ob_start();
?>
Your page content bla bla bla bla ...

<?php
echo '1';

// Get the content that is in the buffer and put it in your file //
file_put_contents('yourpage.html', ob_get_contents());
?>

Это сохранит содержимое страницы в файле yourpage.html.

person HoLyVieR    schedule 23.09.2010
comment
Большое спасибо. Ты только что спас мне жизнь. - person asdfkjasdfjk; 25.10.2012
comment
У меня тоже был такой же вопрос. Спасибо за ответ. НО где это yourpage.html сохраняется? Я не мог найти файл в папке моего каталога - person AlwaysANovice; 23.02.2014
comment
@Walahh Если chdir не был вызван, он должен находиться в той же папке запрошенного скрипта. Если вы не уверены, что это такое, вы можете позвонить getcwd. - person HoLyVieR; 23.02.2014
comment
Я ожидал кучу кода, но теперь мне повезло, спасибо за мини-код :) - person Hassan Saeed; 28.11.2016

Я думаю, мы можем использовать Функции управления выводом PHP, вы можете использовать save сначала содержимое в переменную, а затем сохраните их в новый файл, в следующий раз вы можете проверить, существует ли html-файл, а затем визуализировать, что еще раз сгенерирует страницу.

<?php
$cacheFile = 'cache.html';

if ( (file_exists($cacheFile)) && ((fileatime($cacheFile) + 600) > time()) )
{
    $content = file_get_contents($cacheFile);
    echo $content;
} else
{
    ob_start();
    // write content
    echo '<h1>Hello world to cache</h1>';
    $content = ob_get_contents();
    ob_end_clean();
    file_put_contents($cacheFile,$content);
    echo $content;
}
?>

Пример взят из: http://www.php.net/manual/en/function.ob-start.php#88212

person Chetan Sharma    schedule 23.09.2010

Используйте JavaScript для отправки document.getElementsByTagName('html')[0].innerHTML в качестве скрытого входного значения или с помощью ajax на стороне сервера. Это более полезно, чем буферизация вывода, если контент впоследствии просматривается/модифицируется с помощью JavaScript, о чем серверная сторона может не иметь никакого представления.

person BalusC    schedule 23.09.2010
comment
Спасибо, BalusC. Итак, если я использую var $s = document.getElements... (в php), я могу записать весь var в файл на сервере? - person ; 23.09.2010
comment
JavaScript работает в веб-браузере, а не на веб-сервере. Вы знаете JS? В любом случае, учитывая ваш комментарий, я думаю, что этот ответ все-таки не то, что вам нужно :) Вероятно, вы скорее хотите сохранить HTML-страницу, сгенерированную непосредственно PHP, а не текущую открытую HTML-страницу (во всем ее текущем состоянии на стороне клиента). Проверьте ответ Холивье. - person BalusC; 23.09.2010

Если вы хотите сохранить полную html-страницу вместе с css, изображениями и скриптами в одном html-файле, вы можете использовать этот класс, который я написал:

Этот класс может сохранять HTML-страницы с изображениями, CSS и JavaScript.

Он берет URL-адрес данной страницы и извлекает его для сохранения в заданном файле.

Класс может анализировать HTML и определять, какие изображения, CSS и файлы JavaScript ему нужны, поэтому эти файлы также загружаются и сохраняются внутри HTML-страницы, сохраненной в локальном файле.

При желании он может пропустить код JavaScript, сохранить только содержимое страницы и сжать результирующую страницу, удалив пробелы.

http://www.phpclasses.org/package/8305-PHP-Save-HTML-pages-complete-with-images-CSS-and-JS.html

person Sarfraz    schedule 25.10.2013

Я чувствую, что вам нужен curl, чтобы вы могли сохранять вывод любых страниц. Используйте curl с returntransfer true. и делай что хочешь с выводом.

person Satya Prakash    schedule 23.09.2010

person    schedule
comment
Это отличное предложение, но, похоже, вы должны ввести полный URL-адрес ($txt = httpPost(‹url›, )) вместо использования локального файла. может быть, покажите нам, как получить локальный файл вместо удаленного URL? - person Woody; 08.12.2018