PHP пишет в файл с определенной точки - PullRequest
0 голосов
/ 26 октября 2019

Мне нужна помощь в написании php-скрипта, чтобы открыть файл в режиме записи.
Затем найдите начальную точку до конца, куда писать, и поместите содержимое в эту область, и сохраните весь файл с помощьюновый контент
например:

azertiyo
...
...
##Start
hello
something
123456
654321
##End
...
...
pouzyer

1 Ответ

0 голосов
/ 26 октября 2019

Вы можете использовать функцию 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...