Я не совсем уверен в вашем вопросе: хотите ли вы записать данные, а не перезаписать начало существующего файла или записать новые данные в начало существующего файла, сохранив существующий контент после это?
Чтобы вставить текст без перезаписи начала файла , вам нужно открыть его для добавления (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 +»), любые данные, которые вы записываете в файл, всегда будут добавляться независимо от позиции файла.