PHPでHTMLコンテンツをテキスト・ファイルに変換する

(1/3)
PHP を用いると、HTML コンテンツを簡単にテキスト・ファイルに変換することができる。また、EUC や UTF-8 で記述されたコンテンツをシフト JIS に変換することも簡単にできる。
そこで今回は、インターネット上の HTML コンテンツをシフト JIS のテキスト・ファイルに変換するプログラムを作ってみることにする。

サンプル・プログラム

プログラムを実行すると、URL を入力するテキストボックスが表示される。
変換対象の URL を入力し[変換]ボタンを押すと、変換され、テキスト・ファイルを保存するか否かを問い合わせてくる。

プログラムを実行する

ダウンロード(PHP4/5共用)

サンプル・プログラムの解説:HTTPヘッダ

0034: header("Content-Disposition: attachment; filename=download.txt");

このプログラムも、入力と変換を 1 つのファイルですませるように工夫してある。
ただし、後半はテキストファイルを出力するため、HTML 形式ではなくなる。そこで、前半部分に HTML を構成する<!DOCTYPE</html>をすべて入れてある。
space
組み込み関数  header  が、テキスト・ファイルを出力するための肝である。
header は、サーバが HTML コンテンツを送信する前に付加する[HTML レスポンス・メッセージのメッセージ・ヘッダ――HTTP ヘッダ――を出力するための関数である。
"download.txt" という名前のテキスト・ファイルを、サーバからクライアントに向かって送信するには、サンプル・プログラムのように記述する。
space
サーバから送られてきた拡張子 ".txt" のファイルに対してクライアント側がどのように動くかについては、ブラウザの MIME 設定による。一般的なブラウザでは、ファイルを保存するようなメッセージが出る。
space
ここで、HTTP ヘッダについて簡単に説明しておこう。
通常の HTML コンテンツの場合、以下のようなメッセージ・ヘッダが返る(サーバは Apache)。
HTTP/1.1 200 OK
Date: Thu, 20 Mar 2003 11:03:45 GMT
Server: Apache
Last-Modified: Mon, 10 Mar 2003 05:58:20 GMT
Connection: close
Content-Type: text/html
これが gif ファイルだと以下のようになる。
HTTP/1.1 200 OK
Date: Thu, 20 Mar 2003 11:03:45 GMT
Server: Apache
Last-Modified: Mon, 10 Mar 2003 05:58:20 GMT
Connection: close
ETag: "833be-ae7-383bb23c"
Accept-Ranges: bytes
Content-Length: 12345
Content-Type: image/gif
テキスト・ファイルを送る場合は、header("Content-Type: text/txt") とするだけでも十分なのだが、そうすると、保存ファイル名が php ソースと同じ名前になってしまう。
この項つづく
header