PHPでは、ファイル操作を組み合わせて、サーバでCSVファイルを生成することができます。
<?php
$file_name = "date.csv";
$fp = fopen( $file_name, "w" );
$theme = ""氏名", "性別", "年齢", "血液型", "郵便番号", "住所"n";
fputs( $fp, $theme );
$contents = """ . "山田 太郎" . "", "" . "男" . "", "" . "40" . "", "" . "B" . "", "" . "166-0003" . "", "" . "東京都杉並区高円寺南1-111-11" . ""n";
fputs( $fp, $contents );
fclose( $fp );
?>
<html>
<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<title>CSVファイルのダウンロード</title>
</head>
<body>
<a href="date.csv">ダウンロードできます!</a>
</body>
</html>

上記のスクリプトでは、「$file_name = "date.csv";」で生成するファイルを指定して、「$fp = fopen( $file_name, "w" );」で書き込み専用でファイルを開きます。続いて、変数$themeに、CSVファイルを開いた時の見出しを、カンマ区切りで指定します。
そして、fputs()関数で変数$themeに指定された文字列を、作成したファイルdate.csvに書き込みます。その後のデータについても、同様にファイルへ書き込み、fclose()関数で生成したファイルを閉じます。
生成したCSVファイルへのリンクを指定すれば、ダウンロードができるようになります。
fputs( filepointer, string,[ length ] );
fputs()関数はfwrite()関数の別名で、すべての面で同一です。lengthパラメータはオプションであり、指定されない場合、文字列全体が書かれることに注意して下さい。
mkdir()関数を使って、新しくディレクトリを作成することができます。
<?php
$dir = "c:¥template¥sample";
$dirCheck = mkdir( $dir, 0777 );
if( $dirCheck ) {
echo "ディレクトリが作成されました";
} else {
echo "ディレクトリの作成に失敗しました";
}
?>
ディレクトリが作成されました
上記のスクリプトでは、本章で作成したローカルディスク(C:)直下の「template」ディレクトリ内に、「sample」ディレクトリを新規に作成しています。実際に作成できているかどうかは「template」ディレクトリ内を確認してみてください。
mkdir() 関数の第1引数にはディレクトリを作成するパス、およびディレクトリ名を指定します。パスは相対パスでも絶対パスでも指定することができます。第2引数を指定すると、作成するディレクトリにアクセス権を設定することもできます。アクセス権は、先頭に「0」をつけた8進数3桁で指定します。3桁の1桁目は「所有者」、2桁目は「所有グループ」、3桁目は「その他」のアクセス権を表します。
上記のスクリプトの「0777」は、すべてに「読み込み」「書き込み」「実行」を許可している指定です。第2引数を省略した場合は、デフォルトで「0777」になります。
| 値 | アクセス権 |
|---|---|
| 0 | なし |
| 1 | 実行 |
| 2 | 書き込み |
| 3 | 書き込み、実行 |
| 4 | 読み込み |
| 5 | 読み込み、実行 |
| 6 | 読み込み、書き込み |
| 7 | 読み込み、書き込み、実行 |
また、mkdir()関数を使って、複数のディレクトリを作成することも可能です。
<?php
$dir = "c:¥template¥sample2¥sample3";
$dirCheck = mkdir( $dir, 0777, true );
if( $dirCheck ) {
echo "ディレクトリが作成されました";
} else {
echo "ディレクトリの作成に失敗しました";
}
?>
ディレクトリが作成されました
上記のスクリプトでは、本章で作成したローカルディスク(C:)直下の「template」ディレクトリ内に、「sample2」ディレクトリを新規に作成し、さらにその作成したディレクトリの中に「sample3」ディレクトリも新規に作成しています。実際に作成できているかどうかは「template」ディレクトリ内を確認してみてください。
第3引数に「TRUE」を指定することで、指定パスに存在しないディレクトリが全て作成されます。「TRUE」を指定しなかった場合は、「Warning: mkdir() [function.mkdir]: No such file or directory in ・・・」のような警告メッセージが表示されます。
rmdir()関数を使って、ディレクトリを削除することができます。
<?php
$dir = "c:¥template¥sample";
$dirCheck = rmdir( $dir );
if( $dirCheck ) {
echo "ディレクトリが削除されました";
} else {
echo "ディレクトリの削除に失敗しました";
}
?>
ディレクトリが削除されました
上記のスクリプトでは、(C:)直下の「template」ディレクトリ内の、「sample」ディレクトリを削除しています。実際に削除できているかどうかは「template」ディレクトリ内を確認してみてください。
ディレクトリを削除する場合は、削除対象のディレクトリ内には何も無いことが前提となります。もし、ディレクトリ内にファイルやディレクトリが残っている場合は警告メッセージが表示されます。