удалить новую строку из текстового файла после вставки значения

я создаю текстовый файл из папки таким образом:

$fp = fopen("mylist.txt","rw+");
foreach(glob("folder/*.*") as $value){
fwrite($fp,$value."\n");
}

и он создает внутри текста каждый элемент, по одному на строку, НО также добавляет новую строку в конце файла.

Это содержимое mylist.txt:

foldelr/file1.mp3
folder/file2.mp3
(BLANK NEWLINE)

Я попытался удалить пустую строку в конце текстового файла, таким образом:

$filetxt = fopen("mylist.txt","r");
$rtrim = rtrim($filetxt, "\n");
$newfile = file_put_contents("newfile.txt", $rtrim);

Но это не работает, потому что в «newfile.txt» у меня все еще есть пустая строка после последнего имени файла.

Я пытался преобразовать файл в массив, использовать «array_diff ()», чтобы удалить последнюю строку, но это не удалось.
Я попробовал также все предложения в этой теме: удалить символы новой строки из текстового файла с помощью php но не исправить мою проблему.

Кто-нибудь может помочь мне понять, что я пропускаю или ошибаюсь?

С уважением

Брус

1

Решение

Используйте метод file_get_contents, он отлично работает для меня

    $fp = fopen("mylist.txt","rw+");
foreach (glob("test/*.*") as $value) {
fwrite($fp, $value . "\n");
}

$filetxt = file_get_contents("mylist.txt");
$rtrim =  rtrim($filetxt, "\n");
$newfile = file_put_contents("mylist.txt", $rtrim);

Или Вы также можете удалить последнюю новую строку, используя счетчик массивов.

$fp = fopen("mylist.txt","rw+");
$i =0;
foreach(glob("folder/*.*") as $value){
$i++;
if($i < count(glob("folder/*.*")))
fwrite($fp,$value."\n");
else
fwrite($fp,$value);
}
3

Другие решения

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

fp = fopen("mylist.txt","rw+");

foreach(glob("folder/*.*") as $value){
fwrite($fp, "\n".$value);
}
1

По вопросам рекламы [email protected]