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);
}
<<<EOD〜EOD; は、ヒアドキュメントと呼びます。 この間に書かれたテキストをそのまま変数に格納したり、echoなどで画面に表示したりできます。 ヒアドキュメントは、ダブルクォーテーション「"」とほぼ同等の働きをしますが、「"」をエスケープしなくて記述できる、というメリットがあります。
ヒアドキュメントは、<<<文字列という形で始まり、文字列;で終わります。 終わりは必ず改行の直後でないといけません。 空白も入れてはいけないので注意しましょう。
Copyright (C) 2003-2018. PHP で WEB 作成 All rights reserved.