前回に引き続きPHPを使って、指定ページをダウンロードするツールを作りました。URLを入力すると、そのページのHTMLをダウンロードします。画像などの依存ファイルはダウンロードされません。
ツール入力画面のHTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>HTMLをダウンロード</title> <style> input[type="text"] { width: 30em; margin-bottom: 1em; padding: 0.3em 0; font-size: 1.6em; } input[type="submit"] { font-size: 2em; } </style> </head> <body> <h1>URLを入力してください。</h1> <form action="download.php" method="post"> <input type="text" name="url" value=""><br> <input type="submit" value="書き出し"> </form> </body> </html> |
styleは動作には関係ありません。
formからURLを送る簡単なHTMLです。
ダウンロード処理を行うPHP
1 2 3 4 5 6 7 8 9 10 11 |
<?php $url = $_POST['url']; $html = file_get_contents($url); if($html){ header("Content-type: text/html; charset=utf-8"); header("Content-Disposition: attachment; filename=\"download.html\""); echo $html; }else{ echo '<h1>URLが見つかりません。<br><a href="index.html">戻る</a></h1>'; } ?> |
受け取ったURLを、「download.html」でダウンロードします。
もし、URLが見つからない場合は、「見つかりません」と「戻る」を表示します。
PHP環境にアップする
上記のHTML(index.html)とPHP(download.php)を同じ階層にアップし、index.htmlのURLを開くと、ツールが使えます。
実際の使いどころ
ただHTMLをダウロードするだけなら、ソースを開いてコピペしたり、ブラウザの機能で保存することもできます。
そのため、あるページを変換してダウンロードする必要がある場合に使っています。
公開ページを変換して、別のシステムに取り込むときとか。
ページのコード($htmlに格納)にstr_replace()で必要な形式に変換してダウンロードしています。