- Home ›
- PHP関数のリファレンス ›
- 日付関数
fwrite関数の使い方(ファイルに書き込む)
PHP で用意されている組み込み関数の一つである fwrite 関数の使い方です。 fwrite 関数はファイルへデータを書き込みます。この関数ではバイナリモードで書き込みが行われます。
(2022 年 09 月 28 日公開 / 2022 年 09 月 28 日更新)
fwrite関数の書式と基本的な使い方
fwrite 関数は次のように定義されています。
int fwrite(resource handle, string string [, int length])
引数のハンドルで指定したファイルポインタの位置に指定した文字列を書き こみます。バイト数が指定されている場合は、バイト数分だけ書き込みます。 (指定したバイト数よりも文字列が小さい場合には文字列を書き込んだ時点 で終了)。 引数: handle 対象となるファイルのハンドル string 書き込む文字列 length 一度に書き込む最大バイト数 返り値: 書き込んだバイト数。エラーが起こった場合はFALSE
書き込まれる位置はfopenで指定したモードによって異なります。「r+」「w」「w+」「x」「x+」の場合はファイルポイントが先頭に設定されますので、上書きでファイルの先頭から上書きで書き込みが行われます。「a」「a+」の場合はファイルポインタがファイルの最後に設定されますので、既存のファイルの内容の最後に追加される形で書き込みが行われます。
またバイナリモードでの書き込みですので、Windows環境で使う場合にはfopenのモードに「b」を追加して下さい。(例:「ab」「wb」)。
実際の流れは下記のようになります。
$data = 'abcdefg';
$fp = fopen('filename', 'ab');
if ($fp){
if (flock($fp, LOCK_EX)){
if (fwrite($fp, $data) === FALSE){
print('ファイル書き込みに失敗しました');
}else{
print($data.'をファイルに書き込みました');
}
flock($fp, LOCK_UN);
}else{
print('ファイルロックに失敗しました');
}
}
fclose($fp);
では実際に試してみます。
<html>
<head><title>PHP TEST</title></head>
<body>
<?php
$data = 'abcdefg';
$fp = fopen('sample.txt', 'ab');
if ($fp){
if (flock($fp, LOCK_EX)){
if (fwrite($fp, $data) === FALSE){
print('ファイル書き込みに失敗しました<br>');
}else{
print($data.'をファイルに書き込みました<br>');
}
flock($fp, LOCK_UN);
}else{
print('ファイルロックに失敗しました<br>');
}
}
$flag = fclose($fp);
if ($flag){
print('無事クローズしました');
}else{
print('クローズに失敗しました');
}
?>
</body>
</html>
書き込みの対象となる"sample.txt"は下記のようなファイルです。
サンプルプログラムを Web サーバに設置しブラウザ経由で見ると下記のように表示されます。
今回は追加する形で書き込みを行いましたので"sample.txt"は下記のようになっています。
では次に上書きした場合も試してみます。
<html>
<head><title>PHP TEST</title></head>
<body>
<?php
$data = 'abcdefg';
$fp = fopen('sample.txt', 'wb');
if ($fp){
if (flock($fp, LOCK_EX)){
if (fwrite($fp, $data) === FALSE){
print('ファイル書き込みに失敗しました<br>');
}else{
print($data.'をファイルに書き込みました<br>');
}
flock($fp, LOCK_UN);
}else{
print('ファイルロックに失敗しました<br>');
}
}
$flag = fclose($fp);
if ($flag){
print('無事クローズしました');
}else{
print('クローズに失敗しました');
}
?>
</body>
</html>
書き込みの対象となる"sample.txt"は下記のようなファイルです。
サンプルプログラムを Web サーバに設置しブラウザ経由で見ると下記のように表示されます。
今回は上書きする形で書き込みを行いましたので"sample.txt"は下記のようになっています。
上書きの場合は、既存の内容が全て消えた上で頭から書き込みということになりますので注意して下さい。
-- --
PHP で用意されている組み込み関数の一つである fwrite 関数の使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。