web-dev-qa-db-ja.com

現在のページをHTMLとしてサーバーに保存する

現在のページをHTMLファイルとしてサーバーに保存するには、どのようなアプローチを提案できますか?この場合、セキュリティがnotの問題であることにも注意してください。

私はこれを探し回って果てしなく時間を費やしましたが、一つも見つかりませんでした。

あなたの助けは大歓迎です、ありがとう!

編集

ご協力ありがとうございました。大変感謝しました。

38
anon271334

ページの出力をファイルに保存するつもりであれば、バッファリングを使用してそれを行うことができます。使用する必要がある関数は 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

63
HoLyVieR

PHPの Output Control Functions を使用できると思います。最初に変数にコンテンツを保存してから、新しいファイルに保存し、次に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

9
Chetan Sharma

JavaScriptを使用して、document.getElementsByTagName('html')[0].innerHTMLを非表示の入力値として、またはajaxによってサーバー側に送信します。これは、コンテンツがJavaScriptによって後でトラバース/変更された場合に出力バッファリングよりも便利です。サーバー側はこれについて何も考えていない可能性があります。

3
BalusC

完全なhtmlページをcss、画像、およびスクリプトとともに単一のhtmlファイルに保存する場合は、私が書いたこのクラスを使用できます。

このクラスは、画像、CSS、およびJavaScriptを備えたHTMLページを保存できます。

特定のページのURLを取得し、それを取得して特定のファイルに保存します。

このクラスはHTMLを解析し、必要な画像、CSS、およびJavaScriptファイルを判別できるため、これらのファイルもダウンロードされ、ローカルファイルに保存されたHTMLページ内に保存されます。

オプションで、JavaScriptコードをスキップし、ページコンテンツのみを保持し、結果のページを圧縮して空白を削除できます。

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

3
Sarfraz

ページの出力を保存できるように、カールが必要だと感じています。 returntransfer trueでcurlを使用します。そして、出力であなたがやりたいことをしてください。

1
Satya Prakash
//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
shaan gola