日付関数(日付・時刻)
現在の日時を取得
getdate()関数を使用することによって、現在の日時を取得することができます。
書き方例
<?php
$today = getdate();
echo $today["year"]."/".$today["mon"]."/".$today["mday"];
?>
| 返される連想配列のキー | ||
|---|---|---|
| キー | 説明 | 戻り値の例 |
| "seconds" | 秒。数値。 | 0 から 59 |
| "minutes" | 分。数値。 | 0 から 59 |
| "hours" | 時。数値 | 0 から 23 |
| "mday" | 月単位の日。数値 | 1 から 31 |
| "wday" | 曜日。数値。 | 0 (日曜) から 6 (土曜) |
| "mon" | 月。数値。 | 1 から 12 |
| "year" | 年。4桁の数値。 | 例: 1999 あるいは 2003 |
| "yday" | 年単位の日。数値。 | 0 から 365 |
| "weekday" | 曜日。フルスペルの文字。 | Sunday から Saturday |
| "month" | 月。フルスペルの文字。 | January から December |
日付/時刻をフォーマット
date()関数は、日付/時刻を指定されたフォーマットの文字列に変換します。
書き方例
<?php
$str1 = date("Y/m/d");
echo $str1;
?>
| 以下の文字が format パラメータ文字列として認識されます | ||
|---|---|---|
| format 文字 | 説明 | 戻り値の例 |
| 日 | ||
| d | 日。二桁の数字(先頭にゼロがつく場合も) | 01 から 31 |
| D | 曜日。3文字のテキスト形式。 | Mon から Sun |
| j | 日。先頭にゼロをつけない。 | 1 から 31 |
| l ('L') | 曜日。フルスペル形式。 | Sunday から Saturday |
| N | 曜日の数値表現。 | 1(月曜日)から 7(日曜日) |
| w | 曜日。数値。 | 0 (日曜)から 6 (土曜) |
| z | 年間の通算日。数字。(ゼロから開始) | 0 から 365 |
| 週 | ||
| W | 月曜日に始まる年単位の週番号 | 例: 42 (年の第 42 週目) |
| 月 | ||
| F | 月。フルスペルの文字。 | January から December |
| m | 月。数字。先頭にゼロをつける。 | 01 から 12 |
| M | 月。3 文字形式。 | Jan から Dec |
| n | 月。数字。先頭にゼロをつけない。 | 1 から 12 |
| t | 指定した月の日数。 | 28 から 31 |
| 年 | ||
| L | 閏年であるかどうか。 | 1なら閏年。0なら閏年ではない。 |
| o | これは Y とほぼ同じだが、 (W)が前年あるいは翌年に属する場合がある点で 異なる。 | 例: 1999 あるいは 2003 |
| Y | 年。4 桁の数字。 | 例: 1999または2003 |
| y | 年。2 桁の数字。 | 例: 99 または 03 |
| 時 | ||
| a | 午前または午後(小文字) | am または pm |
| A | 午前または午後(大文字) | AM または PM |
| B | Swatch インターネット時間 | 000 から 999 |
| g | 時。12時間単位。先頭にゼロを付けない。 | 1 から 12 |
| G | 時。24時間単位。先頭にゼロを付けない。 | 0 から 23 |
| h | 時。数字。12 時間単位。 | 01 から 12 |
| H | 時。数字。24 時間単位。 | 00 から 23 |
| i | 分。先頭にゼロをつける。 | 00 から 59 |
| s | 秒。先頭にゼロをつける。 | 00 から 59 |
| u | マイクロ秒。 | 例: 654321 |
日付の正当性をチェック
入力フォームから入力された日付が正しい値であるかなど、checkdate()関数を使ってチェックをすることができます。
式 ≪ bool checkdate ( int $month , int $day , int $year ) ≫
<?php
$year = 2009;
$month = 2;
$day = 28;
var_dump( checkdate($month, $day, $year) );
?>
ファイル関数
ファイルを開く
fopen()関数を使用して、マシン上にあるファイルを開くことができます。
式 ≪ fopen( filename, mode ); ≫
<?php
$file = fopen( "c:¥¥template¥¥sample.txt", "r" );
fpassthru( $file );
?>
ファイルハンドル(書き方例の$file変数の事です)
ファイルに関する命令の時、どのファイルに対して実行するか指示をするために、実ファイル名に対して処理用の名前(ファイルハンドル)を付け、それ以降ではそのファイルハンドル名に対して処理を指示します。これにより、実ファイルが変更になっても修正個所が少しで済みます。
| fopen() で使用可能な mode のリスト | |
|---|---|
| mode | 説明 |
| 'r' | 読み込みのみでオープンします。ファイルポインタをファイルの先頭に置きます。 |
| 'r+' | 読み込み/書き出し用にオープンします。 ファイルポインタをファイルの先頭に置きます。 |
| 'w' | 書き出しのみでオープンします。ファイルポインタをファイルの先頭に置き、 ファイルサイズをゼロにします。ファイルが存在しない場合には、 作成を試みます。 |
| 'w+' | 読み込み/書き出し用でオープンします。 ファイルポインタをファイルの先頭に置き、 ファイルサイズをゼロにします。 ファイルが存在しない場合には、作成を試みます。 |
| 'a' | 書き出し用のみでオープンします。ファイルポインタをファイルの終端に置きます。 ファイルが存在しない場合には、作成を試みます。 |
| 'a+' | 読み込み/書き出し用でオープンします。 ファイルポインタをファイルの終端に置きます。 ファイルが存在しない場合には、作成を試みます。 |
| 'x' | 書き込みのみでオープンします。ファイルポインタをファイルの先頭に置きます。 ファイルが既に存在する場合には fopen() は失敗し、 E_WARNING レベルのエラーを発行します。 ファイルが存在しない場合には新規作成を試みます。 |
| 'x+' | 読み込み/書き出し用でオープンします。 それ以外のふるまいは 'x' と同じです。 |
| 'c' | 書き込みのみでオープンします。ファイルが存在しない場合には新規作成を試みます。 ファイルが既に存在する場合でもそれを ('w' のように) 切り詰めたりせず、 また ('x' のように) 関数のコールが失敗することもありません。 ファイルポインタをファイルの先頭に置きます。 |
| 'c+' | 読み込み/書き出し用でオープンします。 それ以外のふるまいは 'c' と同じです。 |
※ファイルポインタ
ファイルの中で読み込みや書き込みを行う位置を表します。ファイルポイントが先頭で読み込みを開始すれば、ファイルの先頭から読み込みを行うことになります。先頭から書き込みを行うということは、既にファイルに何か書いてあっても、既存の内容を破棄してファイルの先頭から書き込みを行うことを意味します。また、ファイルポイントが最後とは、既存の内容の最後に追加として書き込みを行うことを意味します。
ファイルを閉じる
開いたファイルに対する操作を終えたら、fclose()関数を使ってファイルを閉じます。引数には、fopen()関数で取得したファイルハンドルを渡します。
式 ≪ fclose( filepointer ); ≫
<?php
$file = fopen( "c:¥¥template¥¥sample.txt", "r" );
fclose( $file );
?>
ファイルの中身を表示する
fpassthru()関数は、fopen()関数で開いたファイルの中身をそのまま出力する関数です。この関数で表示されたときには、fclose()関数を実行しなくても、ファイルは自動的に閉じられます。
式 ≪ fpassthru( filepointer ); ≫
<?php
file = fopen( "c:¥¥template¥¥close.txt", "r" );
fpassthru( $file );
?>
ファイルの内容を一度に全て読み込む
ファイルの内容を一度に全て読み込むには、file()関数、およびfile_get_contents()関数を使います。file()関数は、読み込んだファイルの各行のデータを配列に格納して返します。一方、file_get_contents()関数は、読み込んだファイルの各行のデータを文字列に格納して返します。
式 ≪ array file ( string $filename); ≫書き方例
<?php
$filename = "c:¥¥template¥¥test.txt";
$array = file( $filename );
var_dump( $array );
?>
式 ≪ string file_get_contents ( string $filename ); ≫
書き方例
<?php
$filename = "c:¥¥template¥¥test.txt";
$str = file_get_contents( $filename );
echo $str;
?>
文字数単位で読み込む
fread()関数は、ファイル全体ではなく、指定した文字数単位で読み込みます。
式 ≪ fread( filepointer, string,[ length ] ); ≫
<?php
// ファイルの先頭から6文字を表示する
$file = fopen( "c:¥¥template¥¥sample.txt", "r" );
$str = fread( $file, 6 );
echo "$str";
fclose( $file );
?>
ファイルへの書き込み
fwrite()関数を使って、ファイルへの書き込みを行います。
式 ≪ fwrite( filepointer, string,[ length ] ); ≫
<?php
$file = fopen( "c:¥¥template¥¥sample.txt", "a" );
fwrite( $file, "書き込めましたか?" );
?>
すでに書き込まれている内容の後に「書き込めましたか?」が追記されます。
ファイルをオープンせずに、ファイル名と書き込む値を指定するだけでファイルへの書き込みをが行えるfile_put_contents()関数というのがあります。
式 ≪ int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] ): ≫
<?php
$file = "c:¥¥template¥¥sample.txt";
$data = "書き込めましたか?"
file_put_contents( $file, $data, FILE_APPEND );
?>
| 使用できるフラグ | |
|---|---|
| フラグ | 説明 |
| FILE_USE_INCLUDE_PATH | filename をインクルードディレクトリから探します。 詳細な情報は include_path を参照ください。 |
| FILE_APPEND | filename がすでに存在する場合に、 データをファイルに上書きするのではなく追記します。 |
| LOCK_EX | 書き込み処理中に、ファイルに対する排他ロックを確保します。 |
※ 排他的ロック
排他的ロックとは、プログラムがファイルなどを独占的に利用するように設定することです。他のプログラムはそのファイルを編集できなくなり、データの不整合を防ぐことができます。
ファイルの存在をチェックする
file_exists()関数を使って、指定したファイルが存在するかどうかを調べることができます。
式 ≪ bool file_exists ( string $filename ); ≫
<?php
$dir = "c:¥¥template¥¥sample2.txt";
if ( file_exists( $dir ) ) {
echo "指定されたファイルは存在します";
} else {
echo "指定されたファイルは存在しません";
}
?>
