я создаю текстовый файл из папки таким образом:
$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 но не исправить мою проблему.
Кто-нибудь может помочь мне понять, что я пропускаю или ошибаюсь?
С уважением
Брус
Используйте метод 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);
}
Вы пытались сначала написать новую строку и только чем значение (при условии, что у вас уже есть содержимое в файле)?
fp = fopen("mylist.txt","rw+");
foreach(glob("folder/*.*") as $value){
fwrite($fp, "\n".$value);
}