我有:
"") { fwrite($file,$_POST["lastname"]."\n"); } fclose($file); ?>
但它会覆盖文件的开头.如何插入?
我不完全确定你的问题 - 你想写数据而不是覆盖现有文件的开头,或者将新数据写入现有文件的开头,保留现有文件之后的现有内容吗?
要插入文本而不覆盖文件的开头,您必须打开它才能追加(a+
而不是r+
)
$file=fopen(date("Y-m-d").".txt","a+") or exit("Unable to open file!"); if ($_POST["lastname"] <> "") { fwrite($file,$_POST["lastname"]."\n"); } fclose($file);
如果您尝试写入文件的开头,则必须首先读入文件内容(请参阅参考资料file_get_contents
),然后将新字符串后跟文件内容写入输出文件.
$old_content = file_get_contents($file); fwrite($file, $new_content."\n".$old_content);
上述方法适用于小文件,但您可能会遇到内存限制,试图在使用时读取大文件file_get_conents
.在这种情况下,请考虑使用rewind($file)
,它将句柄的文件位置指示符设置为文件流的开头.使用时请注意rewind()
,不要使用a
(或a+
)选项打开文件,如下所示:
如果您已在附加("a"或"a +")模式下打开文件,则无论文件位置如何,您将始终追加写入文件的任何数据.