@UnderDog32

Как с помощью PHP скопировать часть контента из файла?

Добрый день!

Имеется код:
<?
$file_url ='https://сайт-донор.рф/export_file/export.txt';
$save_to = realpath("public_html/import_file/") . 'import.txt';
function downloadSrc($file_url, $save_to){
    $content = file_get_contents($file_url);
    file_put_contents($save_to, $content);
}
downloadSrc($file_url, $save_to);
?>


Код копирует содержимое файла из внешнего источника. Содержимое файла export.txt:

Начало
@export_start@
Контент 1
Контент 2
Контент 3
@export_end@
Конец


Как сделать так, чтобы в файле оказалось содержимое между @export_start@ и @export_end@? Т.е. в файле import.txt должно быть:

Контент 1
Контент 2
Контент 3
  • Вопрос задан
  • 217 просмотров
Решения вопроса 1
@IS-Builder
~ PHP-8 & REGEXP - This is a really powerful kit ~
Читаете файл построчно в цикле, по условию проверяете строку на соответствие метке, если совпадает - выполняете запись в новый файл:
$export = 'export.txt';
$import = 'import.txt';

$exp = fopen($export, 'r');
$imp = fopen($import, 'a');

$switch = false;

while ($line = fgets($exp)) {
    $line = trim($line);
    $line != '@export_end@' ?: $switch = false;
    ! $switch ?: fputs($imp, $line . PHP_EOL);
    $line != '@export_start@' ?: $switch = true;
}

fclose($exp);
fclose($imp);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@rPman
метод file (тоже умеет http) вернет массив из строк в указанном файле, проходишь по нему в цикле, как найдешь стартовую строку, начинай все строки сохранять в результирующий файл, заведи переменную статус - true - сохраняем, false - пропускаем, как найдешь строку окончание - устаналивай ее в false.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы