PHP ファイルを開く/読み取る/閉じる
この章では、サーバー上のファイルを開き、読み取り、閉じる方法を説明します。
PHPファイルを開く - fopen()
ファイルを開くより良い方法は、fopen()
関数を使うことである。この関数は、readfile()
関数よりも多くのオプションを提供します。
レッスンでは、テキストファイル「webdictionary.txt」を使用します。
<div> AJAX = Asynchronous JavaScript and XML
CSS = Cascading Style Sheets
HTML = Hyper Text Markup Language
PHP = PHP Hypertext Preprocessor
SQL = Structured Query Language
SVG = Scalable Vector Graphics
XML = EXtensible Markup Language</div>
fopen()
の最初のパラメータには、オープンするファイル名を指定し、2番目のパラメータには、ファイルをどのモードで開くかを指定する。以下の例では、fopen()関数が指定されたファイルを開けなかった場合のメッセージも生成します。:
例
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fread($myfile,filesize("webdictionary.txt"));
fclose($myfile);
?>
ヒント:fread()
関数とfclose()
関数については後述します。
ファイルは、次のいずれかのモードで開くことができます。
モード |
説明 |
---|---|
r | ファイルを読み取り専用で開く。ファイルポインタはファイルの先頭から始まります。 |
w | ファイルを書き込み専用で開く。ファイルの内容を消去するか、ファイルが存在しない場合は新しいファイルを作成します。ファイルポインタはファイルの先頭から始まります。 |
a | ファイルを書き込み専用で開く。ファイル内の既存のデータは保持されます。ファイル ポインタは、ファイルの末尾から始まります。ファイルが存在しない場合は、新しいファイルを作成します |
x | 書き込み専用の新しいファイルを作成します。ファイルが既に存在する場合はFALSEとエラーを返します。 |
r+ | 読み取り/書き込み用にファイルを開く。ファイルポインタはファイルの先頭から始まります。 |
w+ | 読み取り/書き込み用にファイルを開く。ファイルの内容を消去するか、ファイルが存在しない場合は新しいファイルを作成します。ファイルポインタはファイルの先頭から始まります。 |
+ | 読み取り/書き込み用にファイルを開く。ファイル内の既存のデータは保持されます。ファイルポインタは、ファイルの末尾から始まります。ファイルが存在しない場合は、新しいファイルを作成します。 |
×+ | 読み取り/書き込み用の新しいファイルを作成します。ファイルが既に存在する場合はFALSEとエラーを返します。 |
PHPファイル読み取り - fread()
fread()
関数は、開いているファイルから読み取ります。
最初のパラメーターfread()
には、読み取るファイルの名前が含まれ、2番目のパラメーターは読み取る最大バイト数を指定します。
次のPHPコードは、「webdictionary.txt」ファイルを最後まで読み取ります。
<div> fread($myfile,filesize("webdictionary.txt"));</div>
PHPファイルを閉じる - fclose()
fclose()
関数は、開いているファイルを閉じるために使用されます。
ファイルの処理が終了したら、すべてのファイルを閉じることをお勧めします。サーバー上で開いているファイルがリソースを占有するのは望ましくありません。
fclose()
は、閉じるファイルの名前 (またはファイル名を保持する変数) が必要です。
<div><?php
$myfile = fopen("webdictionary.txt", "r");
// some code to be executed....
fclose($myfile);
?></div>
PHP単一行読み取り - fgets()
fgets()
関数は、ファイルから1行を読み取るために使用されます。
以下の例は、「webdictionary.txt」ファイルの最初の行を出力します。
例
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fgets($myfile);
fclose($myfile);
?>
注:fgets()
関数の呼び出しの後、ファイルポインタは次の行に移動している。
PHPファイルの終わりをチェック - feof()
feof()
関数は、「ファイルの終わり」(EOF)に到達したかどうかをチェックします。
feof()
関数は、長さが不明なデータをループする場合に便利です。
以下の例では、ファイルの終わりに達するまで、「webdictionary.txt」ファイルを1行ずつ読み取ります。
例
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// Output one line until end-of-file
while(!feof($myfile)) {
echo fgets($myfile) . "<br>";
}
fclose($myfile);
?>
PHP1文字読み取り - fgetc()
fgetc()
関数は、ファイルから単一の文字を読み取るために使用されます。
以下の例では、ファイルの終わりに達するまで、「webdictionary.txt」ファイルを1文字ずつ読み取ります。
例
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// Output one character until end-of-file
while(!feof($myfile)) {
echo fgetc($myfile);
}
fclose($myfile);
?>
注意:fgetc()関数の呼び出し後、ファイルポインタは次の文字に移動します。
完全なPHPファイルシステムリファレンス
ファイルシステム関数の完全なリファレンスについては、PHP ファイルシステム リファレンスを参照して下さい。
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。