Сохранить текущую страницу как HTML на сервере - PullRequest
38 голосов
/ 23 сентября 2010

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

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

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

Редактировать

Спасибо всем за помощь, она очень ценится.

Ответы [ 6 ]

62 голосов
/ 23 сентября 2010

Если вы имели в виду сохранение вывода страницы в файл, вы можете использовать для этого буферизацию. Вам нужно использовать следующие функции: 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.

9 голосов
/ 23 сентября 2010

Я думаю, что мы можем использовать Функции управления выводом 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

3 голосов
/ 25 октября 2013

Если вы хотите сохранить полную 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

3 голосов
/ 23 сентября 2010

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

1 голос
/ 01 августа 2017
//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);
1 голос
/ 23 сентября 2010

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

...