Я не совсем уверен в вашем вопросе - вы хотите писать данные и не переписывать начало существующего файла или записывать новые данные в начало существующего файла, сохраняя существующее содержимое после этого?
Чтобы вставить текст без перезаписывания начала файла, вы должны будете открыть его для добавления (a+
rather than 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+
) варианты, как:
Если вы открыли режим файл в Append («а» или «+»), любые данные, запись в файл всегда будет добавлена, независимо от положения файла.
Вы бьете меня к этому, я писал это. – UnkwnTech 2008-09-19 16:58:44