1

リストに物を追加したり、物を読んだり、リストをクリアしたりできるプログラムを作ろうとしています。clear 関数は完全に機能していますが、一度に複数の行を追加または読み取ることができないようです。私は使用してfwrite($handle, $MyString); いますが、それはファイル全体のすべてを$MyString. 私が使用しているファイルから情報を取得し、$list = fgets($handle);echo を使用して印刷します。これは、ファイルの最初の行のみを読み取ります。何か助けはありますか?ありがとう!

取得リスト コード:

<?php
$myFile = "needlist.txt";
$fh = fopen($myFile, 'r');
$theData = fgets($fh);
fclose($fh);
echo $theData;
?>

リスト コードに追加します。

<?php
$neededlist = "needlist.txt";
$fh = fopen($neededlist, 'w');
$user_message = $_REQUEST['txtweb-message'];
$needed .= $user_message;
$needed .= "\n";
fwrite($fh, $needed);
fclose($fh);
echo "You have successfully added ", $user_message;
?>
4

2 に答える 2

1

ファイルに書き込むとき、ファイルハンドルを「a」モードオプションで開いていますか? 「w」または「x」で開くと切り捨てられるため、クリーンなファイルから開始します ( http://php.net/fopen )

fgets(); 行の終わりまでのみ読み取ります ( http://php.net/fgets )。ファイル全体を取得するには、次を試してください。

var $list = "";
var $line = "";
while ($line = fgets($handle)) {
     $list = $list . "\n" . $line;
}
echo $list;

fread は改行 IIRC を読み取らないため、「\n」を追加します。file_get_contents や fread など、この状況により適した関数もいくつかあります。

于 2013-06-03T14:48:08.723 に答える
0

Fgets は 1 つの文字列のみを返します。次のようなサイクルで使用する必要があります。

while (($buffer = fgets($handle, 4096)) !== false) {
    echo $buffer;
}
于 2013-06-03T14:45:00.617 に答える