Вы можете использовать функцию array_search
, чтобы найти определенный индекс в файле, в котором появляются маркеры start
и end
. Чтобы сделать это, файл должен быть прочитан с использованием file
, который создает массив.
Здесь предполагается, что будет несколько строк ввода - удобно вводимых в array
- этот массив расположен междунашел индексы для начальной и конечной точек, используя array_merge
...
function editfile( $sourcefile, $start='##start', $end='##end', $data=array() ){
/*
create a filtered array of lines
*/
$lines=array_filter( file( $sourcefile , FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES ) );
/* begin generating output */
$output=array_merge(
/* add content that appears before the `start` marker and including the marker */
array_splice( $lines, 0, array_search( strtolower( $start ), array_map('strtolower', $lines ) ) + 1 ),
/* add the new data, whatever that is to be */
$data,
/* add the content that appeared after the `end` marker - including the marker */
array_splice( $lines, array_search( strtolower( $end ), array_map('strtolower', $lines ) ) )
);
/* write the new array back to the same file as individual lines */
file_put_contents( $sourcefile, implode( PHP_EOL, $output ) );
}
editfile( 'test.txt', '##Start', '##end', array('The','quick','brown','fox','jumped','over','the','lazy','dog') );
При использовании текста, поставленного в вопросе и сохраненного как test.txt
, этот код выдает следующий вывод:
azertiyo
...
...
##Start
The
quick
brown
fox
jumped
over
the
lazy
dog
##End
...
...
pouzyer