PHPでファイルに書き込む方法は?


108

私はこのスクリプトを1つの無料のPHP対応サーバーに置いています。

<html>
<body>

<?php
$file = fopen("lidn.txt","a");


fclose($file);
?>

</body>
</html>

ファイルを作成しますがlidn.txt、空です。

ファイルを作成して何かを書き込むにはどうすればよいですか。たとえば、「Cats chase mouse」という行などです。

回答:


153

次のようなより高レベルの関数を使用できます。

file_put_contents($filename, $content);

呼び出しと同一であるfopen()fwrite()と、fclose()ファイルへの書き込みを順次にデータ。

ドキュメント:file_put_contents


3
余談file_put_contents()ですが、PHP5でのみ機能します。この場合は問題のようには見えませんが(結局のところ、回答が受け入れられました)、PHP4.xを実行しているホストがまだいくつかある可能性があります。
デュロス2009年

2
非常に重要な付記:file_put_contents()は、fopen()と比較すると、メモリの悪夢です。私はそれを使用するのが大好きですが、大きなファイルを処理するときは、それにデータを「ストリーミング」できるようにしたいのです。PHPは、内部メモリとして最終的なファイルサイズの大きな倍数を必要とするので、この関数を使用するときはそのことを覚えておいてください。データ量が少ない場合は、簡単に使用できるためお勧めします。
John

1
次に、file_put_contents($ filename、$ other_stream)を使用します。これは、メモリ効率が非常に高いstream_copy_to_stream-)を使用するのと同じです。
Savageman、2016年

@DurothそれはPHP5でのみ機能しますか、それともPHP5からのみ機能しますか?これらは2つの異なるものです。
Xsmael

2
@Xsmael 2009年の遠い過去ではありません;)PHP7は当時は存在しませんでした。しかし、ええ、put_file_contents()PHP5で最初に導入され、それ以降のバージョンにも含まれています。
デュロス

88

fwrite()を検討してください:

<?php
$fp = fopen('lidn.txt', 'w');
fwrite($fp, 'Cats chase mice');
fclose($fp);
?>

上記のコードを使用することもできますし、file_put_contentsを使用して、ファイルの読み書き方法の詳細を参照することもできます。techflirt.com/ file
Kumar Singh

どのように我々は、ファイルを閉じずに、ファイルを読み込んでください上記のようにファイルへの書き込みの後@sathish( fclose($fp) )、私は試してみました$fp = fopen('lidn.txt', 'w+');$fp = fopen('lidn.txt', 'a+');どちらもそれらを働いた
Kasun Siyambalapitiya


10
$text = "Cats chase mice";
$filename = "somefile.txt";
$fh = fopen($filename, "a");
fwrite($fh, $text);
fclose($fh);

あなたが使う fwrite()


上記のようにファイルに書き込んだ後、ファイルを閉じずにファイルを読み取るにはどうすればよいですか(fclose($fh))、を試してみました$fh = fopen('lidn.txt', 'w+');、 `$ fh = fopen( 'lidn.txt'、 'a +'); `しかし、どちらも機能しませんでした
Kasun Siyambalapitiya

10

ファイルを書くのは簡単です:

$fp = fopen('lidn.txt', 'w');
fwrite($fp, 'Cats chase mice');
fclose($fp);

6

次のコードを使用して、Webディレクトリにファイルを書き込みます。

write_file.html

<form action="file.php"method="post">
<textarea name="code">Code goes here</textarea>
<input type="submit"value="submit">
</form>

write_file.php

<?php
// strip slashes before putting the form data into target file
$cd = stripslashes($_POST['code']);

// Show the msg, if the code string is empty
if (empty($cd))
    echo "Nothing to write";

// if the code string is not empty then open the target file and put form data in it
else
{
    $file = fopen("demo.php", "w");
    echo fwrite($file, $cd);

    // show a success msg 
    echo "data successfully entered";
    fclose($file);
}
?>

これは動作するスクリプトです。必ずURLを変更してくださいサイトで使用する場合はフォームアクションfopen()関数のターゲットファイルをしてください。

幸運を。


1
私はphpを書き始めたばかりですが、これは単にテキストファイルを書き込んでいるようではなく、phpコードファイルをサーバーに書き込んでいるため、「demo.php」URLを参照するとすぐに実行できます。誰かが悪意のあるPHPコードをサーバーに書き込んですぐに実行する可能性がありますよね?これはあなたが自分のコードをテストできるようにするためだと思いますが、この特定の実装のリスクについて人々に警告する必要があります。(それは言われて、私はそれが好きで、私たちもそれを私たちにしてくれるでしょう)
RufusVS

6

のファイルに書き込むにはPHP、次の手順を実行する必要があります。

  1. ファイルを開く

  2. ファイルに書き込む

  3. ファイルを閉じる

    $select = "data what we trying to store in a file";
    $file = fopen("/var/www/htdocs/folder/test.txt", "a");
    fwrite($file  , $select->__toString());
         fclose($file );

6

手順は次のとおりです。

  1. ファイルを開く
  2. ファイルに書き込む
  3. ファイルを閉じる

    $select = "data what we trying to store in a file";
    $file = fopen("/var/www/htdocs/folder/test.txt", "w");        
    fwrite($file, $select->__toString());
    fclose($file);

5

fwrite()はsmidgenより高速で、file_put_contents()とにかくこれら3つのメソッドのラッパーにすぎないため、オーバーヘッドを失うことになります。 論文

file_put_contents(ファイル、データ、モード、コンテキスト):

file_put_contents文字列をファイルに書き込みます。

この関数は、ファイルにアクセスするときにこれらのルールに従います。FILE_USE_INCLUDE_PATHが設定されている 場合は、ファイル名のコピーのインクルードパスを確認します。ファイルが存在しない場合はファイルを作成し、ファイルを開いて、LOCK_EXが設定されており、FILE_APPENDが設定されている場合はファイルをロックします。ファイルの最後に移動します。それ以外の場合は、ファイルの内容を消去します。データをファイルに書き込み、ファイルを閉じてロックを解除します。この関数は、成功するとファイルに書き込まれた文字の番号を返し、失敗するとFALSEを返します。

fwrite(ファイル、文字列、長さ):

fwrite開いているファイルへの書き込み。関数は、ファイルの最後または指定された長さに達したときに、どちらか早い方で停止します。この関数は、書き込まれたバイト数を返します。失敗した場合はFALSEを返します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.