2015-12-04 4 views
2

У меня есть большой файл «file.txt»Заменить определенную строку в большом файле (PHP)

Я хочу, чтобы прочитать одну конкретную строку из файла, что-то изменить, а затем записать эту строку обратно на свое место в файле.

Будучи, что это большой файл, я не хочу читать весь файл во время чтения или записи, я хочу получить доступ только к одной строке.

Это то, что я использую, чтобы получить нужную строку:

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

Теперь, как я пишу эти строки $ символ новой строки, чтобы заменить старую строку в файле?

ответ

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

Смежные вопросы