ファイルの入出力について平成30年 3月 15日 作成

00104

概略

PHPファイルからテキストデータ(txt/cvs)ファイルを読み込み、そのデータを活用したい場面がでてき為、その方法を学ぶ。

手段

ファイルの入出力においては複数の関数が用意されている為それらを活用、各関数の特徴をしっかりと把握する事でファイル入出力を容易に行える様に。

実装方法

使用する関数

  • fgetsファイル内データを1行読み込む。
  • fwriteファイルへ書き込む。
  • file_get_contentsファイルの内容全てを読み込む。
  • file_put_contents文字列をファイルに書き込む。
  • readfileファイルの内容全てを読み込む。
  • fileファイル内データを全て読み込む。1行ずつ配列に格納する。

fgets()によるファイル内データの読み込み(1行のみ)

<?php
	// 「fopen()」でファイルを開く 引数に「対象ファイル」「モード」を指定
	// モード:r = 読専、r+ = 読書、w = 書専、w+ = 読書、a = 追書専、a+ = 追読書
	// w と a モード時においては、対象ファイルが存在しない場合ファイルが自動生成される
	
	//  「fopen()」で開く
	$fp = fopen("パスを含むファイル名", "r");
	//  「fgets()」で読込 → 出力
	echo fgets($fp);
	//  「fclose()」で閉じる
	fclose($fp);
?>

fgets()によるファイル内データの読み込み(全行)

<?php
	$fp = fopen("パスを含むファイル名", "r");
	while($line = fgets($fp)) {
		echo $line;
	}
	fclose($fp);
?>
	
	または
	
<?php
	$fp = fopen("パスを含むファイル名", "r");
	while(!feof($fp)){
		echo fgets($fp);
	}
	// ファイルを閉じずに最初から再度処理をした場合には「rewind()関数」にてファイルポインタを先頭に戻す
	// rewind($fp);
	fclose($fp);
?>

fwrite()によるファイルへの書き込み

<?php
	$fp = fopen("パスを含むファイル名", "w");
	fwrite($fp, "ファイルへ書き込むテキスト");
	fclose($fp);
?>

「w」だと上書きさる。上書させたくない(追記)場合には「a」にする。

file_get_contents()によるファイル内容の読み込み

<?php
	// 「fgets()」の一連の作業【fopen() → fwrite() → fclose()】を1関数のみで処理できる
	
	$file = "パスを含むファイル名";
	echo  file_get_contents($file);
?>

ファイルの内容全体が表示される。

file_put_contents()によるファイルへの書き込み

<?php
	$file = "パスを含むファイル名";
	file_put_contents($file, "ファイルへ書き込むテキスト");
?>

ファイルの内容全体が書き換えられる。

readfile()によるファイル内容の読み込み

<?php
	// echoやprintの文字出力がなくても単体で出力できる
	
	$file = "パスを含むファイル名";
	readfile($file);
?>

file()によるファイル内容の読み込み

<?php
	$file = "パスを含むファイル名";
	$lines = file($file);
	
	var_dump($lines);
	
	/* 読み込んだテキストの中身(3行のテキスト文)
	さんぷる
	サンプル
	sample
	*/
	
	// 結果
	array(3) {
	[0]=>
	string(14) "さんぷる
	"
	[1]=>
	string(14) "サンプル
	"
	[2]=>
	string(6) "sample
	"
	}

	// オプションパラメーターを設定しないと改行コードも含まれてしまうので、下記パラメーターを指定する
	
	FILE_SKIP_EMPTY_LINES ・・・ 配列の各要素の最後に改行文字を追加しません
	FILE_IGNORE_NEW_LINES ・・・ 空行を読み飛ばします

	FILE_SKIP_EMPTY_LINESは、改行文字が行の最後にあると空文字ではないため飛ばしてくないので、FILE_SKIP_EMPTY_LINESとFILE_IGNORE_NEW_LINES両方指定する

	$file = "パスを含むファイル名";
	$lines = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
	
	var_dump($lines);
	
	/* 読み込んだテキストの中身(3行のテキスト文)
	さんぷる
	サンプル
	sample
	*/
	
	// 結果
	array(3) {
	[0]=>
	string(14) "さんぷる"
	[1]=>
	string(14) "サンプル"
	[2]=>
	string(6) "sample"
	}
?>

考察

単純にファイルの内容を表示しただけであれば「file_get_contents()」、単純にファイルの内容全体を書き換えたい場合であれば「file_put_contents()」がコードも短くなり便利だと感じた。

最後までお読み下さり ありがとうございました。記事はここ迄です。

尚、本記事は作成から「5年以上」経過しています。

記事作成当時と現在の状況等により内容が適切でない場合があります。また、リンク切れが生じている場合もあります事を予めご了承下さい。

お気に入りに登録しますとお気に入り記事を一元管理でき、再度閲覧したい場合等 容易に記事を探し出す事ができますのでご活用下さい。

下段にはコメントを掲載しております。

広告バナー

コメント

頂いたコメントを下記に掲載しております。更に下部にはコメント投稿フォームを設けております。

注意事項を確認・了承した上、コメント投稿お願いいたします。

注意事項に該当するコメントにつきましては、事前告知なしに投稿したコメントの削除を行う場合があります。

予めご了承下さい。

  • 記事内容と無関係なコメント
  • 公序良俗に反するコメント
  • 個人情報や法令違反を含むコメント
  • その他、管理者が不適切と判断したコメント

現在 頂いているコメントはありません

返信先(コメント管理番号)コメントに対し返信する場合のみ
お名前・ハンドルネーム2~32文字内で入力下さい
メールアドレス公開される事はありません
電話番号半角数字+ハイフンで入力下さい
コメント全角500文字内で入力下さい