【问题标题】:PHP appending to file from specific positionPHP从特定位置附加到文件
【发布时间】:2011-08-24 04:05:05
【问题描述】:

在 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 的方法,但不幸的是这不起作用。我会环顾四周,如果不是明天我就照你说的做。
猜你喜欢
  • 2022-11-15
  • 2020-09-05
  • 2017-10-22
  • 2019-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多