1

我正在尝试制作一个程序,我可以在其中将内容添加到列表中,阅读内容并清除列表。我的 clear 功能运行良好,但是我似乎一次不能添加或读取超过 1 行。我正在使用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;

您想添加“\n”,因为 fread 不读取换行符 IIRC。还有一些函数可能更适合这种情况,例如 file_get_contents 和 fread。

于 2013-06-03T14:48:08.723 回答
0

Fgets 只返回一个字符串。你应该像这样循环使用它:

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