替换大文件中的特定行(PHP)

时间:2015-12-04 20:20:16

标签: php

我有一个大文件“file.txt”

我想从文件中读取一个特定的行,更改一些内容,然后将该行重新写回文件中的位置。

由于它是一个大文件,我不想在读取或写入过程中读取整个文件,我只想访问那一行。

我正在使用它来检索所需的行:

$myLine = 100;
$file = new SplFileObject('file.txt');
$file->seek($myLine-1);
$oldline = $file->current();
$newline=str_replace('a','b',$oldline);

现在如何编写此$换行符来替换文件中的旧行?

1 个答案:

答案 0 :(得分:0)

您可以使用此功能:

function injectData($file, $data, $position) {
    $temp = fopen('php://temp', "rw+");
    $fd = fopen($file, 'r+b');

    fseek($fd, $position);
    stream_copy_to_stream($fd, $temp); // copy end

    fseek($fd, $position); // seek back
    fwrite($fd, $data); // write data

    rewind($temp);
    stream_copy_to_stream($temp, $fd); // stich end on again

    fclose($temp);
    fclose($fd);
}

我是从PHP what is the best way to write data to middle of file without rewriting file

获得的