如何在一个文本文件中添加多个字符串,并阅读全部?

时间:2013-06-03 14:35:02

标签: php

我正在尝试创建一个程序,我可以将其添加到列表中,读取内容并清除列表。我有清晰的功能,但是我似乎无法一次添加或读取多行。我使用的是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;
?>

2 个答案:

答案 0 :(得分:0)

Fgets只返回一个字符串。你应该在周期中使用它:

while (($buffer = fgets($handle, 4096)) !== false) {
    echo $buffer;
}

答案 1 :(得分:0)

当您写入文件时,是否使用“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。