即使文件不为空,fgets()也会返回false

时间:2013-07-08 19:46:39

标签: php file fgets

我有一个表单,我将给定的输入保存到文本文件中,
但我无法从保存的文件中读取:

while(!feof($fileNotizen)) {
$rawLine = fgets($fileNotizen);
if($rawLine==false) {
  echo "An error occured while reading the file"; 
}


$rawLine似乎总是假的,即使我之前使用过这个函数,也要填充文本文件:

function addToTable($notizFile) {
 fwrite($notizFile, $_POST["vorname"]." ".$_POST["nachname"]."#");
 $date = date(DATE_RFC850);
 fwrite($notizFile, $date."#");
 fwrite($notizFile, $_POST["notiz"].PHP_EOL);   
}


在我提交表单并获取错误消息后,如果我检查文本文件,一切都在那里,所以该功能正常工作。

如果它有价值,我用这个命令打开文件:

$fileNotizen = fopen("notizen.txt", "a+");

问题可能是指针已经在文件的末尾,因此返回false?

2 个答案:

答案 0 :(得分:2)

$fileNotizen = fopen("notizen.txt", "a+");

a+打开以进行读/写,但将文件指针置于末尾。因此,您必须先fseek()开头或查看fopen() flags并根据您的需求明智地选择。

使用fseek($fileNotizen, 0, SEEK_SET);来回放文件。

答案 1 :(得分:0)

要读取/获取文件内容,请尝试以下函数:

    function read_file($file_name) {
        if (is_readable($file_name)) {
            $handle = fopen($file_name, "r");
            while (!feof($handle)) {
                $content .= fgets($handle); 
            }
            return !empty($content) ? $content : "Empty file..";
        } else {
            return "This file is not readable.";
        }
    }

如果您想查看单独行显示的文件内容,请使用<pre></pre>标记,如下所示:

echo "<pre>" . read_file("notizen.txt") . "</pre>";

如果你想在文件中写/添加内容,那么试试这个函数:

    function write_file($file_name, $content) {
        if (file_exists($file_name) && is_writable($file_name)) {
            $handle = fopen($file_name, "a");
            fwrite($handle, $content . "\n");
            fclose($handle);
        }
    }        

你可以像这样使用它:

$content = "{$_POST["vorname"]} {$_POST["nachname"]}#" . date(DATE_RFC850) . "#{$_POST["notiz"]}";
write_file("notizen.txt", $content);