PHP逐行读取大文件并替换字符串

时间:2015-04-26 10:01:01

标签: php string replace large-files

我希望逐行读取大文件,执行字符串替换并将更改保存到文件中,IOW一次重写1行。在PHP / Unix中有任何简单的解决方案吗? 我想到的最简单的方法是将这些行写入一个新文件,然后替换旧文件,但它并不优雅。

2 个答案:

答案 0 :(得分:1)

我认为只有2个选项

  1. 使用记忆
  2. 读取,替换然后将替换的字符串存储到内存中,完成后,覆盖源文件。

    1. 使用tmp文件
    2. 阅读&替换字符串然后立即将每一行写入tmp文件,一旦完成,用tmp文件替换原始文件

      #1将更有效,因为IO很昂贵,如果你有大量内存或处理文件不是太大,请使用它。

      #2会有点慢但即使在大文件上也相当稳定。

      当然,您可以通过将替换字符串按行写入文件(而不仅仅是按行)来结合两种方式

      我能想出最简单,最优雅的方式。

答案 1 :(得分:0)

在大多数情况下,使用临时文件似乎并不是一个糟糕的解决方案。

A<C>