CSVをHTMLに変換

効率良くページ作成する方法

くり返しの多いページは、データ自体はCSVで管理し、プログラムを利用してHTML生成を行いましょう。

CSVとは

CSVとは、comma separated value の略で、データがカンマで区切られたファイルのことです。 ファイル自体はテキスト形式なので、シンプルで汎用性が高いです。

CSVとHTML

CSVは汎用性が高いため、良く利用されているファイル形式です。 データベースのデータなどは、たいていの場合CSV形式でエクスポートできます。 CSVファイルからHTMLファイルを生成すれば、大量のデータを含むページが容易に生成できます。

例えば、リンク集をCSVでデータベース化して、必要に応じてHTMLファイルに変換する、といった利用方法があります。

  $fp = fopen("link.csv","r");
  $outputdata = "<dl>";
  while ($csvdata = fgetcsv($fp,2048)) {
  $outputdata .= "<dt><a href=\"$csvdata[0]\">";
  $outputdata .= "$csvdata[1]";
  $outputdata .= "</a></dt>";
  $outputdata .= "<dd>$csvdata[2]</dd>";
  }
  $outputdata .= "</dl>";
  fclose($fp);

CSVファイルの例は↓です。 プログラム中で参照する場合は、$csvdata[0] のように、数字が0から始まることに注意しましょう。

http://calculator.jp/, 自動計算, 便利ツール
http://tax.xrea.jp/, アフィリエイトの税金, 個人事業の節税対策

ロジックとレイアウトの分離

CSVファイルの処理と、HTMLでの表記の設定は、本質的には別のものです。 CSVファイルの処理(ロジック)はそのままで、リスト形式で出力したり、テーブルで出力したりと、HTML出力を変更する場合(レイアウト)など、片方だけを変更することも多いです。

本格的なロジックとレイアウトの分離は、smartyなどのテンプレートエンジンを利用することが多いですが、ここでは、ユーザー定義関数を利用して、簡易なロジックとレイアウトの分離を行います。

ロジックとレイアウトの分離を行うと、ロジック部分は、下のようにシンプルになります。

  $outputdata = ITEMHEAD;
  while ($csvdata = fgetcsv($fp,2048)) {
  $outputdata .= maindata($csvdata);
  }
  $outputdata .= ITEMFOOT;

レイアウト部分は、ユーザー定義関数を利用しています。 この例ではテーブルレイアウトにしています。 レイアウトを変更する場合、 変更する箇所がスクリプト本体と分離されているので、 変更しやすく、またミスも起こりにくくなっています。

  define("ITEMHEAD","<table>");
  define("ITEMFOOT","</table>");

  function maindata($data) {
      $result = <<<EOD
<tr>
  <td>
  <a href="$data[0]">$data[1]</a>
  </td>
  <td>
  $data[2]
  </td>
</tr>
EOD;
      return($result);
  }

<<<EODEOD; は、ヒアドキュメントと呼びます。 この間に書かれたテキストをそのまま変数に格納したり、echoなどで画面に表示したりできます。 ヒアドキュメントは、ダブルクォーテーション「"」とほぼ同等の働きをしますが、「"」をエスケープしなくて記述できる、というメリットがあります。

ヒアドキュメントは、<<<文字列という形で始まり、文字列;で終わります。 終わりは必ず改行の直後でないといけません。 空白も入れてはいけないので注意しましょう。

Copyright (C) 2003-2018. PHP で WEB 作成 All rights reserved.