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.