我想做一个程序,我可以添加到一个列表,阅读的东西,并清除列表。我有清晰的功能工作完美,但我似乎不能一次添加或读取超过1行。我正在使用fwrite($handle, $MyString);
,但它将整个文件中的所有内容替换为$MyString
。为了从文件中获取信息,我使用$list = fgets($handle);
,然后使用echo打印它。这只读取文件中的第一行。任何帮助吗?谢谢!
Getlist代码:
<?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;
?>
当您写入文件时,您是否使用"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",因为read不读取IIRC中的换行符。还有一些函数可能更适合这种情况,如file_get_contents和read.
Fgets只返回一个字符串。你应该像这样循环使用:
while (($buffer = fgets($handle, 4096)) !== false) {
echo $buffer;
}