Сохранить текущую страницу в формате HTML на сервер
Какой подход может кто-нибудь предложить для сохранения текущей страницы в виде HTML-файла на сервере? В этом случае также обратите внимание, что безопасность не является проблемой .
Я потратил бесконечные часы на поиски этого, но так ничего и не нашел.
Мы очень ценим вашу помощь, спасибо!
Редактировать
Спасибо всем вам за вашу помощь, мы были очень признательны.
6 answers
Если вы имели в виду сохранение выходных данных страницы в файле, вы можете использовать буферизацию для этого. Вам нужно использовать следующие функции: 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
.
Я думаю, что мы можем использовать Функции управления выводом PHP, вы можете сначала сохранить содержимое в переменную, а затем сохранить их в новый файл, в следующий раз вы можете проверить, существует ли 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
Используйте JavaScript для отправки document.getElementsByTagName('html')[0].innerHTML
в качестве скрытого входного значения или с помощью ajax на сторону сервера. Это более полезно, чем буферизация вывода, если содержимое впоследствии обрабатывается/модифицируется JavaScript, о чем серверная сторона может не иметь никакого представления.
Если вы хотите сохранить полную 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
Я чувствую, что вам нужен curl, чтобы вы могли сохранять выходные данные любых страниц. Используйте curl с параметром returntransfer true. и делайте с выводом все, что хотите.
//function to use curl to get the content of the page.
//parameter used url and $data for the posting credentials to retrieve information.
function httpPost($url, $data){
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
//
$filename="abc.html"; // whatever name you want.
$myfile = fopen($filename, "w") or die("Unable to open file!");
$txt = httpPost(<url>, ""); //<url> replace by url you want.
fwrite($myfile, $txt);
fclose($myfile);