PHPプログラミング

最終更新日:
公開日:

レシピ

ファイル / ディレクトリ

テキスト形式のファイルを新しく作成する

PHPでファイルを新しく作成する方法について、fopen関数を使う方法とfile_put_contents関数を使う方法の2通りを解説します。

この記事のポイント

  • fopen関数を使う方法とfile_put_contents関数を使う方法の2つのパターンでファイルを作成する
  • fopen関数を使う方法はファイルを開く/閉じるなどの手順を踏まえてファイルを作成する
  • file_put_contents関数を使う方法はシンプルで便利

目次

PHPでテキスト形式のファイルを作成

新しくファイルを作成する方法はいくつかありますが、今回はfopen関数を使う方法と、file_put_contents関数を使う2種類の方法を解説します。

fopen関数を使う方法はfwrite関数fclose関数も併用し、以下のような流れでファイルを作成します。

fopen関数を使ったコード例

// ファイルを書き込みモードで開く
$file_handle = fopen( "./test/data.txt", "w");

// ファイルへデータを書き込み
fwrite( $file_handle, "保存したいテキスト");

// ファイルを閉じる
fclose($file_handle);

fopen関数の第2パラメータに「w」を指定して書き込みモードで「data.txt」をファイルを開きます。
ここで、指定したファイル名のファイルが存在する場合は上書きを行い、存在しない場合は新しく作成します。

fopen関数はファイルを開くことに成功するとファイルハンドラを返すため、これを$file_handleで保持し、続くfwrite関数fclose関数で対象となるファイルを特定できるようにします。

fwrite関数でファイルの中にテキストデータを書き込み、最後にfclose関数でファイルへのアクセスを閉じて終了します。

もう1つのfile_put_contents関数を使った方法は、上記のファイル作成の流れを1つの関数で行うことができます。

file_put_contents関数を使ったコード例

file_put_contents( "./test/data.txt", "保存したいテキスト");

この関数は第一パラメータにファイル名、第二パラメータに保存したい内容(テキスト)を指定して実行します。
動作自体は上記fopen関数と同様、指定したファイル名のファイルがすでに存在していたら上書き保存し、存在しなければ新規で作成します。

file_put_contents関数の方がシンプルになるため、ファイル書き込みで細かい指定を行う場合を除いてはこちらの方法が便利です。

fopen関数の使用例

少し実用的なコード例を紹介します。

コード例

<?php

// ファイルに書き込むテキスト
$content = "改行を含む
テキストを書き込む\n\n";
$content2 = "テストテキスト";

// ファイルを保存するディレクトリのパス
$path = './test/';

// ディレクトリに書き込み可能か確認
if( is_writable($path) ) {

	// ファイルを書き込みモードで開く
	$file_handle = fopen( $path."data.txt", "w");

	// ファイルへデータを書き込み
	fwrite( $file_handle, $content);
	fwrite( $file_handle, $content2);

	// ファイルを閉じる
	fclose($file_handle);
}

return;

次のようなファイルが作成されます。

data.txt

改行を含む
テキストを書き込む

テストテキスト

is_writable関数でディレクトリへの書き込みが可能かを確認し、可能な場合に限りfopen関数fwrite関数fclose関数でファイルを作成します。

file_put_contents関数の使用例

続いて、file_put_contents関数を使った実用的なコード例を紹介します。

コード例

<?php

// ファイルに書き込むテキスト
$content = "改行を含む
テキストを書き込む";

// ファイルを保存するディレクトリのパス
$path = './test/';

// ディレクトリに書き込み可能か確認
if( is_writable($path) ) {
	file_put_contents( $path."data2.txt", $content);
}

return;

次のようなファイルが作成されます。

data2.txt

改行を含む
テキストを書き込む

ディレクトリに書き込みが可能か確認するところまではfopen関数と同様になります。
file_put_contents関数は1行で完結しているためシンプルになりますが、ファイルに書き込むデータを予めまとめておく必要がある点に注意してください。
fopen関数では書き込むテキストを$content$content2に分割して書き込んでいますが、こちらの方法では$contentに全てまとめておく形になります。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。