PHP fwrite():为什么添加rewind()不会将文件指针放在文件的开头?

时间:2013-11-21 04:07:55

标签: php fwrite

我在PHP中测试文件创建。我正在使用一个带有HTML表单的comment.php文件,并指向实际完成所有工作的list.php文件。

这就是我在list.php上的内容:

define(ARCHIVO, 'comentarios.txt');
if (!empty($_POST['nombre']) && !empty($_POST['comentario'])){
    $nombre=$_POST['nombre'];
    $comentario=$_POST['comentario'];
    $fp=fopen(ARCHIVO, 'a');
    rewind($fp);
    fwrite($fp, '<strong>Nombre: </strong>'.$nombre."<br>\r\n".
                '<strong>Comentario: </strong>'.$comentario."<br>\r\n".
                '<strong>Fecha: </strong>'.
                date("d-m-Y")."<br>\r\n<hr>"
                );
    fclose($fp);
}
$fp=fopen(ARCHIVO, 'r');
fpassthru($fp);
fclose($fp);

现在,我的代码一个接一个地添加了所有注释,我想反过来说:顶部的最新版本。所以我在这段代码中添加了rewind($fp);行,希望在添加更多内容之前将文件指针返回到txt文件的开头。 它不起作用,我的意思是,它仍然将新内容粘贴在底部而不是顶部。

我做错了什么?

2 个答案:

答案 0 :(得分:4)

您应该阅读文档rewind

  

如果您已在附加(“a”或“a +”)模式下打开文件,则无论文件位置如何,您写入文件的所有数据都将被追加。

fopen选择其他模式。

答案 1 :(得分:0)

fopen(ARCHIVO, 'a');

因为您尝试使用&#39; a&#39;打开文件, 如果你想写一些文件的开头,你应该使用&#39; w&#39;,&#39; w +&#39;,&#39; r +&#39;,&#39; x&#39 ;,&#39; x +&#39;

在这种情况下,你可以试试&#39; r +&#39;但你不会添加,将替换文件的开头

如果您没有记忆问题,可以使用&#39; w&#39;

像:

 fwrite($fp, "Things you like to add beggining of file ++ ".file_get_contents(ARCHIVO));