Запись в определенную строку в PHP

Я пишу код, и мне нужно написать номер в определенной строке. Вот что я до сих пор:

<?php $statsloc = getcwd() . "/stats/stats.txt"; $handle = fopen($statsloc, 'r+'); for($linei = 0; $linei < $zone; $linei++) $line = fgets($handle); $line = trim($line); echo $line; $line++; echo $line; 

Я не знаю, где продолжать после этого. Мне нужно написать $ line для этой строки, сохраняя все остальные строки.

Solutions Collecting From Web of "Запись в определенную строку в PHP"

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

 <?php $filename = getcwd() . "/stats/stats.txt"; $line_i_am_looking_for = 123; $lines = file( $filename , FILE_IGNORE_NEW_LINES ); $lines[$line_i_am_looking_for] = 'my modified line'; file_put_contents( $filename , implode( "\n", $lines ) ); 

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

 $stats = file('/path/to/stats', FILE_IGNORE_NEW_LINES); // read file into array $line = $stats[$offset]; // read line array_splice($stats, $offset, 0, $newline); // insert $newline at $offset file_put_contents('/path/to/stats', join("\n", $stats)); // write to file 

Я столкнулся с этим сегодня и хотел решить, используя 2 ответа, но это не сработало. Мне пришлось изменить его на это:

 <?php $filepathname = "./stats.txt"; $target = "1234"; $newline = "after 1234"; $stats = file($filepathname, FILE_IGNORE_NEW_LINES); $offset = array_search($target,$stats) +1; array_splice($stats, $offset, 0, $newline); file_put_contents($filepathname, join("\n", $stats)); ?> 

Поскольку эти строки не работают, поскольку аргумент массива не является индексом:

 $line = $stats[$offset]; $lines[$line_i_am_looking_for] = 'my modified line'; 

Пришлось добавить, что +1 для новой строки под искомым текстом.