使用php,如何在不覆盖文本文件开头的情况下插入文本 [英] Using php, how to insert text without overwriting to the beginning of a text file

查看:193
本文介绍了使用php,如何在不覆盖文本文件开头的情况下插入文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有:

<?php

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

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

fclose($file);

?>

但是它会覆盖文件的开头.如何使其插入?

but it overwrites the beginning of the file. How do I make it insert?

推荐答案

我不能完全确定您的问题-您要写入数据而不要覆盖现有文件的开头还是写入新数据?数据保存到现有文件的开头,然后保留现有内容?

I'm not entirely sure of your question - do you want to write data and not have it over-write the beginning of an existing file, or write new data to the start of an existing file, keeping the existing content after it?

要在不覆盖文件开头的情况下插入文本,则必须将其打开以进行追加( a+,而不是r+ )

To insert text without over-writing the beginning of the file, you'll have to open it for appending (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 ),然后将新字符串和文件内容写入输出文件.

If you're trying to write to the start of the file, you'll have to read in the file contents (see file_get_contents) first, then write your new string followed by file contents to the output file.

$old_content = file_get_contents($file);
fwrite($file, $new_content."\n".$old_content);

以上方法适用于小文件,但尝试使用file_get_conents读取大文件时可能会遇到内存限制.在这种情况下,请考虑使用 rewind($file) ,它会将句柄的文件位置指示符设置为文件流. 请注意,使用rewind()时,请勿使用a(或a+)选项打开文件,如下所示:

The above approach will work with small files, but you may run into memory limits trying to read a large file in using file_get_conents. In this case, consider using rewind($file), which sets the file position indicator for handle to the beginning of the file stream. Note when using rewind(), not to open the file with the a (or a+) options, as:

如果您以附加("a"或"a +")模式打开文件,则无论文件位置如何,都将始终附加写入文件的任何数据.

If you have opened the file in append ("a" or "a+") mode, any data you write to the file will always be appended, regardless of the file position.

这篇关于使用php,如何在不覆盖文本文件开头的情况下插入文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆