ホームページ  >  記事  >  バックエンド開発  >  PHP チュートリアル: PHP を使用してファイルの内容を追加する方法

PHP チュートリアル: PHP を使用してファイルの内容を追加する方法

王林
王林オリジナル
2023-08-31 19:33:122018ブラウズ

PHP チュートリアル: PHP を使用してファイルの内容を追加する方法

Web サイトを作成すると、通常、データはデータベースに保存されます。ただし、後で簡単に読み取ったり変更したりできるように、データをファイルに保存する必要がある場合があります。

PHP には、ファイルからデータを読み書きするための関数が多数付属しています。それらの一部を使用して、ファイルにデータを追加することもできます。このチュートリアルでは、PHP を使用してファイルにデータを追加する 2 つの異なる方法を学習します。

file_put_contents() 関数を理解する

file_put_contents() 関数は、PHP を使用してファイルにデータを書き込む最も簡単な方法の 1 つです。動作を決定するために 4 つの異なるパラメーターを受け入れます。パラメータは次のとおりです:

  • filename: データを書き込むファイルの場所へのパス。
  • data: ファイルに書き込むデータを指定します。通常は文字列ですが、配列またはストリーム リソースを指定することもできます。この関数は、データをファイルに書き込むために、implode() を使用して 1 次元配列の内容を自動的に内部分解します。
  • flags: file_put_contents() の動作を制御します。ここでは 3 つの異なるフラグを個別に、または他のフラグと組み合わせて設定できます。 | 演算子を使用して、さまざまなフラグを組み合わせることができます。
  • context: ストリーム内のコンテンツを読み取ったりアクセスしたりするときに、追加データを PHP に提供する場合にのみ役立ちます。
file_put_contents()

を使用してデータを PHP ファイルに追加します file_put_contents()

この関数のデフォルトの動作では、指定されたファイルの内容が、指定された新しいデータで上書きされます。これは、古いデータを保持して新しいデータを追加する場合にはお勧めできません。この場合、

FILE_APPEND フラグを使用して、ファイルにもともと存在していたデータの末尾にデータを追加する必要があることを PHP に知らせることができます。 特殊なケースでは、複数のスクリプトから同時にデータをファイルに追加することがあります。このような場合、LOCK_EX

フラグを使用してファイルの排他ロックを取得することをお勧めします。これは、データの破損やその他の予期しない動作を防ぐのに役立ちます。このフラグを使用すると、他のスクリプトは、現在のプロセスがファイルへの書き込みを完了するまで待機してから、独自のデータを追加します。

これは、file_put_contents()

を使用して既存のファイルにテキストを追加する例です。

リーリー 上記の例では、カナダに関する情報が含まれる canada.txt

というファイルに文字列を書き込みます。両方の文字列がファイルの末尾に順番に追加されます。

ファイルがまだ存在しない場合、この関数はファイルを作成することに注意してください。ただし、存在しないディレクトリは作成されません。したがって、ファイルへの書き込みを開始する前に、ファイルが存在するかどうかを確認することをお勧めします。

fwrite()

を使用してデータを PHP ファイルに書き込みます

file_put_contents() 関数を使用して PHP ファイルにデータを書き込むことは、fopen()

fwrite()、および fclose(順番通りに )###。これは、ファイルを繰り返し開いたり閉じたりすることになるため、同じファイルに対して複数の書き込みを実行すると非効率になる可能性があることを意味します。 この問題を解決する 1 つの方法は、これらの関数を自分で呼び出すことです。書き込み操作の開始時に fopen() を呼び出すだけです。その後、fwrite() 関数を使用して、内容をファイルに複数回書き込みます。最後に、

fclose()

を呼び出すだけでファイル ハンドルを閉じることができます。それでは、各ステップについて詳しく説明していきます。 fopen() この関数は、ファイルを開く方法を PHP に指示するために使用できる 4 つの異なるパラメーターを受け入れます。

filename: 開きたいファイルの名前。

    mode
  • : ファイルを開くモードを 1 文字または 2 文字で指定できます。このファイルを開いてテキストを追加したいと思います。追加するには、文字 a または
  • a
  • を使用してパターンを設定します。これにより、ファイル ポインタがファイルの末尾に配置されます。ファイルが存在しない場合、PHP はファイルの作成も試みます。 a メソッドを使用してファイルを開くと、ファイルの内容を読み取ることもできます。 use_include_path: 指定されたインクルード パス内のファイルも検索するように PHP に指示します。デフォルトは false です。
  • context
  • : ストリーム内のコンテンツを読み取ったりアクセスしたりするときに、追加データを PHP に提供する場合にのみ役立ちます。
  • ファイルが開いたので、
  • fwrite() 関数を使用してファイルに情報を追加できます。 fwrite()
  • には 3 つのパラメータが必要です:

resource: これは、fopen()

を使用して以前に作成したリソース ハンドルです。
  • string: ファイルに追加するテキスト。
  • length
  • : オプション。ファイルに書き込まれる最大バイト数を設定するために使用されます。
  • すべての書き込み操作が完了したら、
  • fclose() 関数を使用してファイル ハンドルを閉じることができます。

    这里是一个示例,向您展示如何使用 fopen()fwrite()fclose() 将数据附加到文件。

    <?php
    
    //open the file
    $square_file = fopen("squares.txt", "a+");
    
    //write the squares from 1 to 10
    for($i = 1; $i <= 10; $i++) {
        $square = $i*$i;
        $cube = $square*$i;
        $line = "Square of $i is: $square.\n";
        fwrite($square_file, $line);
    }
    
    //read the first line of the file and echo
    fseek($square_file, 0);
    echo fgets($square_file);
    
    //close the file
    fclose($square_file);
    
    ?>
    
    square.txt的内容
    Square of 1 is: 1.
    Square of 2 is: 4.
    Square of 3 is: 9.
    Square of 4 is: 16.
    Square of 5 is: 25.
    Square of 6 is: 36.
    Square of 7 is: 49.
    Square of 8 is: 64.
    Square of 9 is: 81.
    Square of 10 is: 100.
    

    在本例中,我们将数字 1 到 10 的平方写入名为 square.txt 的文件中。我们在 a+ 模式下使用 fopen() 函数打开它,这意味着我们还可以从文件中读取内容以及附加我们自己的内容。每次 for 循环迭代时,都会将包含 $i 及其平方的当前值的新行附加到我们的文件中。

    有一些函数,例如 fread()fgets(),您可以使用它们来读取文件中写入的内容。但是,您通常需要使用 fseek() 将文件指针放置在所需位置以按预期读取数据。循环结束后,我们转到文件的开头并使用 fgets() 读取其第一行。

    最后,我们通过调用函数 fclose() 关闭文件句柄。

    最终想法

    在本教程中,我们学习了使用 PHP 将数据附加到文件的两种不同方法。使用 file_put_contents() 函数可以更方便地将数据写入文件。但是,当您必须对一个文件执行多次写入操作时,使用 fwrite() 会更有效。使用 fopen() 打开文件来附加数据还可以让您选择通过将文件指针移动到所需位置来读取其内容。

以上がPHP チュートリアル: PHP を使用してファイルの内容を追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。