【问题标题】:PHP appending to file from specific positionPHP 从特定位置附加到文件
【发布时间】:2022-11-15 20:56:41
【问题描述】:

在 php 中,我打开一个文本文件并附加到它。但是我需要在文件结尾之前附加 3 个字符。 换句话说,我需要从文件中的特定位置追加/写入。

任何人都可以帮忙吗?

此致 鲁本

【问题讨论】:

标签: php pointers append fseek


【解决方案1】:

您需要打开文件进行编辑,找到所需的位置,然后写入文件,例如:

<?php
  $file = fopen($filename, "c");
  fseek($file, -3, SEEK_END);
  fwrite($file, "whatever you want to write");
  fclose($file);
?>

进一步参考 php.net - fseek doc

希望有所帮助。

【讨论】:

  • 对不起,你错了!在我发帖之前我试过了,我应该提到这一点。如果您使用 a 或 a+ 打开文件,无论 fseek() 或 rewind() 是什么,它都会追加到末尾。阅读您发布的链接底部的注释。另一件事,如果我使用 w 或 w+ 它只是从头开始。还有其他建议吗?
  • 文章底部还指出,通过在“r+”中打开文件,您应该能够使用 fseek()
  • @Luben 你是对的,我没有正确阅读它。正确的模式是“c”或“c+”(或者您可以使用“r+”,如@Neil Aitken 所说:)),如link 中所述,我已经编辑了响应以反映它。
  • @Neil Aitken && @Erbureth 非常感谢大家的帮助!你们都是对的。 r+ 和 c 或 c+ 完美工作!!
【解决方案2】:

如果它是一个短文本文件,并且您只在可以读取内容(使用 fread())时才执行此操作,则使用子字符串将其从末尾最多存储 3 个字符,然后将您的新内容附加到该文件的末尾并写入.

但正如我所说,如果这是一个常规的事情和/或大文件,这不是最好的方法。我会考虑一下。

希望这可以帮助

【讨论】:

  • 谢谢亚历克斯 B!我没有想到这一点,这可能是一个解决方案。但我担心这些文件可能会变得非常大......比如最多 1000 个字符。如果找不到其他任何东西,我将创建一个虚拟文件并进行一些测试。
  • @Luben:1000 个字符大约为 1kB(在 ascii 中,1 个字符 = 1 个字节)。完全读入内存是安全的。
  • 谢谢国王!理想情况下,我想使用他在上面提到的 Erbureth 的方法,但不幸的是,这不起作用。我会四处看看,如果不是明天我会照你说的做。
猜你喜欢
  • 2011-08-24
  • 2020-09-05
  • 2017-10-22
  • 2019-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多