ファイル関連

ファイル情報

関数名意味
is_fileファイルが通常ファイル(ディレクトリではない)なら真
is_dirファイルがディレクトリなら真
is_readableファイルが読み込み可能なら真
is_writableファイルが書き込み可能なら真
is_writeableis_writable のエイリアス
is_executableファイルが実行可能なら真
is_linkファイルがシンボリックリンクなら真
is_uploaded_fileHTTP POST でアップロードされたファイルなら真
file_existsファイルが存在すれば真

ファイルパス操作

dirname($path);
//親ディレクトリのパスを返す
// "etc/passwd"->"etc"
// "/etc/"->"/"
// "."->"."

basename($path);
// "etc/passwd"->"passwd"
// "/etc/"->"etc"
// "."->"."
// "/"->""

$info = pathinfo($path);
$info['dirname'] 
$info['basename'] 
$info['extension'] 
$info['filename'] // PHP 5.2.0 以降

/www/htdocs/inc/lib.inc.php
->
/www/htdocs/inc
lib.inc.php
php
lib.inc

ファイル操作

ファイルの移動(名前変更)/コピー/削除

それぞれ成功すると真を返す。

//ファイルの移動(ファイル名の変更)
rename($oldfile, $newfile);

//ファイルのコピー
copy($file, $newfile);

//ファイルの削除 
unlink($file);

ファイルの読み込み

一行ずつの読み込み

$fp = fopen('file.txt', 'r');
if( $fp === FALSE ) echo "error!";
while( !feof($fp) )
	$line = fgets($fp);
fclose($fp);

ファイル全体を一行ずつ配列に読み込み

  • 指定した名前のファイルを読み出し、配列として返す。ファイル名にはURLも使える。
    $arr = file('file.txt', FILE_BINARY | FILE_IGNORE_NEW_LINES);
    if( $arr === FALSE ) echo "error!";
  • 読み出し状態フラグ(|で区切って指定)
    定数名意味
    FILE_USE_INCLUDE_PATHインクルードパスを探す
    FILE_IGNORE_NEW_LINES配列の末尾に改行コードを入れない
    FILE_SKIP_EMPTY_LINES空行を読み飛ばす
    FILE_TEXTテキストモードで読み出す(バイナリと併用不可)
    FILE_BINARYバイナリモードで読み出す(テキストと併用不可)

ファイル全体を文字列に読み込み

  • 指定した名前のファイルを読み出し、文字列として返す。
    file()と大きく違う点は返り値が文字列であることと、読み込み開始のオフセット位置と最大バイト数を指定できること。
    $str = file_get_contents('file.txt', FILE_TEXT);
    if( $str === FALSE ) echo "error!";
  • 読み出し状態フラグ(|で区切って指定)
    定数名意味
    FILE_USE_INCLUDE_PATHインクルードパスを探す
    FILE_TEXTテキストモードで読み出す(バイナリと併用不可)
    FILE_BINARYバイナリモードで読み出す(テキストと併用不可)

ファイルの書き込み

状態フラグ(|で区切って指定)

定数名意味
FILE_USE_INCLUDE_PATHインクルードパスを探す
FILE_APPEND文字列を排他ロックでファイルに追記書き込みする(LOCK_EX と併用不可)
LOCK_EX書き込み時に排他ロックをかける(FILE_APPEND と併用不可)
FILE_TEXTテキストモードで読み出す(バイナリと併用不可)
FILE_BINARYバイナリモードで読み出す(テキストと併用不可)

文字列をファイルに書き込み

file_put_contents('file.txt', $string, $flag);

file_put_contents('file.txt', $string, LOCK_EX);

一次元配列の要素をファイルに書き込み

一次元配列を指定するとすべて結合された文字列として書き込まれる。
これは file_put_contents('file.txt', implode('',$array));と同等

$array = array('A','B','C');
file_put_contents('file.txt', $array); // "ABC"

一次元配列の要素ごとに改行を入れてファイルに書き込み

$array = array('A','B','C');
file_put_contents('file.txt', count($array) ? implode("\n",$array)."\n" : ''); // "A\nB\nC\n";

文字列をファイルに追記書き込み

file_put_contents('file.txt', $string, FILE_APPEND);

ディレクトリ操作

カレントディレクトリのファイル/ディレクトリの取得

$dirlist = array();
$dp = opendir('.');
while($dir = readdir($dp)){
	$dirlist[] = $dir;
}
closedir($dp);
print_r($dirlist);

Web

ファイルのアップロード

fileという名前でアップロードした場合

$_FILES['file']['name']		// 元のファイル名
$_FILES['file']['type']		// クライアントが設定したファイルタイプ(あまり信用してはいけない)
$_FILES['file']['error']	// エラーコード UPLOAD_ERR_* 定数 UPLOAD_ERR_OK で正常
$_FILES['file']['size']		// ファイルサイズ。ファイルが未選択なら0
$_FILES['file']['tmp_name']	// サーバに保存されている仮のファイル名 size が 0 なら未設定

に値がセットされる。 アップロードのエラーコードExternal Site

その他

変数の保存 serialize

変数の型と値を保存用の文字列に変換・復元を行う。
ただし、オブジェクト型は扱いがむつかしいので基本の型のみを使うべき。

//変数を復元可能な文字列として返す
$serialized_str = serialize($var)
file_put_contents('serialized.txt', $serialized_str);

//serialize された文字列を変数に戻す
$var = unserialize(file_get_contents('serialized.txt'));

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規新規下位 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-12-24 (火) 04:27:18 (1370d)