Используя php, как вставить текст, не перезаписывая к началу текстового файла

In [34]: import datetime

In [35]: _now = datetime.datetime.now()

In [36]: _now
Out[36]: datetime.datetime(2016, 1, 19, 9, 47, 0, 432000)

In [37]: print _now
2016-01-19 09:47:00.432000

In [38]: _parsed = datetime.datetime.strptime(str(_now),"%Y-%m-%d %H:%M:%S.%f")

In [39]: _parsed
Out[39]: datetime.datetime(2016, 1, 19, 9, 47, 0, 432000)

In [40]: assert _now == _parsed
7
задан 19 September 2008 в 16:45
поделиться

3 ответа

Я не совсем уверен в Вашем вопросе - Вы хотите записать, что данные и не иметь его перезаписывают начало существующего файла или пишут новые данные в запуск существующего файла, сохраняя существующее содержание после него?

Для вставки текста, не перезаписывая начало файла необходимо будет открыть его для добавления (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" или "+") режим, любые данные, которые Вы пишете в файл, будут всегда добавляться, независимо от положения файла.

27
ответ дан 6 December 2019 в 06:26
поделиться

Если бы Вы хотите поместить свой текст в начале файла, необходимо было бы считать содержание файла сначала как:

<?php

$file=fopen(date("Y-m-d").".txt","r+") or exit("Unable to open file!");

if ($_POST["lastname"] <> "")
{    
    $existingText = file_get_contents($file);
    fwrite($file, $existingText . $_POST["lastname"]."\n");
}

fclose($file);

?>
0
ответ дан 6 December 2019 в 06:26
поделиться

Вы получаете то же открытие файл для добавления

<?php
$file=fopen(date("Y-m-d").".txt","a+") or exit("Unable to open file!");
if ($_POST["lastname"] <> "")
{
   fwrite($file,$_POST["lastname"]."\n");
}
fclose($file);
?>
0
ответ дан 6 December 2019 в 06:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: