ファイルの作成

TEXT 形式のデータをファイルに書き出します。

プログラムの作成-1

File_Put.php のソースコードを Shift-JIS でタイプして c:\DATA\PHP\ に格納して下さい。
ファイル(test.txt)を作成して TEXT 形式のデータを書き出します。
「die」関数は「exit」関数のエイリアスで、スクリプトの実行を終了します。
他の言語に慣れた方は exit の方が解り易いかも知れません。
<?php
    if (!($fp = fopen("test.txt","w")))
    {
        die('test.txt write open error');
    }
    fputs($fp,"りんご\n");
    fputs($fp,"バナナ\n");
    fputs($fp,"パイナップル\n");
    fputs($fp,"いちご\n");
    fclose($fp);
    print "test.txt Complete\n";
?>

【実行画面】
コマンドプロンプトを起動して File_Put.php をコンパイルします。
C:\Windows\System32>cd \data\php

C:\DATA\PHP>php File_Put.php
test.txt Complete

C:\DATA\PHP>type test.txt
りんご
バナナ
パイナップル
いちご

C:\DATA\PHP>

プログラムの説明

  1. if (!($fp = fopen("test.txt","w"))) でファイルをオープンします。
    $fp はファイルハンドル(File Handle)で、"w" はファイルサイズをゼロにして、書き込み用にオープンします。
    die 関数は exit 関数のエイリアスで、オープンに失敗したときメッセージを表示して終了します。
  2. fputs は Text Data のファイルへの出力で \n は改行コードです。
        fputs($fp,"りんご\n");
        fputs($fp,"バナナ\n");
        fputs($fp,"パイナップル\n");
        fputs($fp,"いちご\n");
    
  3. 出力が終われば fclose して下さい。
    これでカレントフォルダー(実行中のディレクトリ)にファイルが作成されます。
        fclose($fp);
        print "test.txt Complete\n";
    
  4. コマンドプロンプトの type コマンドで "test.txt" を印字しています。
    C:\DATA\PHP>type test.txt
    りんご
    バナナ
    パイナップル
    いちご
    
  5. 作成された test.txt(shift_jis) の改行コードは \n(0A) だけが設定されていました。
    test.txt をダブルクリックしてメモ帳で開くと改行なしで表示されました。

プログラムの作成-2

File_Put2.php のソースコードを Shift-JIS でタイプして c:\DATA\PHP\ に格納して下さい。
ファイル(test.txt)に 0~100 の数値データ(数字)を書き出します。
<?php
    // test.txt に 0~100 のデータを書き出す
    if (!($fp = fopen("test.txt","w")))
    {
        die('test.txt write open error');
    }
    for($i=0; $i<10; $i++)
    {
        fputs($fp, rand(0,100)."\r\n");
    }
    fclose($fp);
    print "test.txt Complete\n";
?>

【実行画面】
コマンドプロンプトを起動して File_Put2.php をコンパイルします。
C:\Windows\System32>cd \data\php

C:\DATA\PHP>php file_put2.php
test.txt Complete

C:\DATA\PHP>type test.txt
2
86
70
94
16
92
83
96
28
5

C:\DATA\PHP>

プログラムの説明

  1. if (!($fp = fopen("test.txt","w"))) でファイルをオープンします。
    $fp はファイルハンドル(File Handle)で、"w" はファイルサイズをゼロにして、書き込み用にオープンします。
    die 関数は exit 関数のエイリアスで、オープンに失敗したときメッセージを表示して終了します。
  2. 0~100 の乱数を10件発生して TEXT 形式(数字)で書き出します。
    一般的に Shift_JIS の改行コードは "\r\n" なので、これを設定してみました。
    \n だけにするか \r\n にするかは、このファイルを入力するプログラムの問題です。
        for($i=0; $i<10; $i++)
        {
            fputs($fp, rand(0,100)."\r\n");
        }
    
  3. アプリケーションによっては、改行コードが邪魔になる場合があります。
    改行コード(\r\n)を削除するソースコードです。
    $str = str_replace(array("\r", "\n"), '', $str);
  4. 出力が終われば fclose して下さい。
    これでカレントフォルダー(実行中のディレクトリ)にファイルが作成されます。
        fclose($fp);
        print "test.txt Complete\n";
    
  5. コマンドプロンプトの type コマンドで "test.txt" を印字してみました。
    C:\DATA\PHP>type test.txt
    2
    86
    70
    94
    16
    92
    83
    96
    28
    5
    
  6. ファイルを追加モードでオープンするときは "a+" を使います。
    $fp = fopen("test.txt","a+");
    
    ファイルをロックするときは LOCK_EX を設定します。
    これ以降、他のプロセスからはアクセスできません。
    flock($fp, LOCK_EX);
    
    ファイルをアンロックするときは LOCK_UN を設定します。
    ロックしたときは、処理が終わり次第アンロックして下さい。
    flock($fp, LOCK_UN);
    

前田稔の超初心者のプログラム入門
PHP Program