現在のページをHTMLファイルとしてサーバーに保存するには、どのようなアプローチを提案できますか?この場合、セキュリティがnotの問題であることにも注意してください。
私はこれを探し回って果てしなく時間を費やしましたが、一つも見つかりませんでした。
あなたの助けは大歓迎です、ありがとう!
編集
ご協力ありがとうございました。大変感謝しました。
ページの出力をファイルに保存するつもりであれば、バッファリングを使用してそれを行うことができます。使用する必要がある関数は 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の 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;
}
?>
JavaScriptを使用して、document.getElementsByTagName('html')[0].innerHTML
を非表示の入力値として、またはajaxによってサーバー側に送信します。これは、コンテンツがJavaScriptによって後でトラバース/変更された場合に出力バッファリングよりも便利です。サーバー側はこれについて何も考えていない可能性があります。
完全な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
ページの出力を保存できるように、カールが必要だと感じています。 returntransfer trueでcurlを使用します。そして、出力であなたがやりたいことをしてください。
//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);