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

(2/3)

サンプル・プログラムの解説:HTMLタグを除く

0035: mb_internal_encoding("Shift_JIS");
0036: 
0037: $source_file = $_POST["uri"];                    //URL
0038: $fp_in  = fopen($source_file, "r");
0039: 
0040: while (! feof($fp_in)) {
0041:     $str = fgetss($fp_in, 1000);     //HTMLタグを除いた1行読み込み
0042:     $str = mb_convert_encoding($str, "Shift_JIS", "Shift_JIS, EUC-JP, UTF-8");
0043:     $str = trim($str);                   //空白文字を除く
0044:     if (strlen($str) > 0)   print $str . "\n";   //0文字以上なら出力する
0045: }
0046: 
0047: fclose($fp_in);
0048: }

ファイルを読み込む部分の流れは、以前のプログラムと同じである。違うのは、1行読み込みのための関数として  fgetss  を使っていることだ。
関数  fgetss  は、ファイルから 1行読み込むと同時に、HTML タグや PHP プログラムを除く。戻り値は、タグなどを除いたあとの文字列である。
オプションで一部のタグを残しておくこともできる。table, tr, td タグのみを残しておきたいなら、fgetss($fp_in, 1000, "<table><tr><td>") のように記述する。

サンプル・プログラムの解説:文字コード変換

次に、入力された文字列をシフト JIS に変換する。この処理は関数  mb_convert_encoding  を使えばよい。
日本語サイトなら、シフト JIS, EUC-JP, UTF-8 のいずれかで構成される HTML コンテンツがほとんどなので、第3 引数は "Shift_JIS, EUC-JP, UTF-8" のように記述した。
space
なお、内部処理はシフト JIS で行うので、事前に関数  mb_internal_encoding  により内部処理コードを規定している。
この項つづく
header