Прочтите все txt-файлы в определенной папке и запишите все содержимое в один файл txt

Я пытаюсь прочитать все *.txt файлы из папки и записать все содержимое из каждого файла в другой файл txt. Но как-то он записывает только одну строку в txt-файл.

Я пробовал с fwrite() и file_put_contents() , не работал.

Вот мой код:

 <?php $dh = opendir('/Applications/XAMPP/xamppfiles/htdocs/test/'); while($file = readdir($dh)) { $contents = file_get_contents('/Applications/XAMPP/xamppfiles/htdocs/test/' . $file); $dc = array($contents); } file_put_contents('content.txt', $dc); ?> 

Это должно сработать для вас:

(Здесь я получаю все файлы * .txt в каталоге с glob() . После этого я просматриваю каждый файл с циклом foreach и получаю содержимое каждого отдельного файла с file_get_contents() и я помещаю содержимое в целевой файл с помощью file_put_contents() )

 <?php $files = glob("path/*.txt"); $output = "result.txt"; foreach($files as $file) { $content = file_get_contents($file); file_put_contents($output, $content, FILE_APPEND); } ?> 

попробуй это

 $contents = array(); $line = file(/*next file in dir*/); foreach($lines as line){ array_push($line, $contents); } //File path of final result $filepath = "mergedfiles.txt"; $out = fopen($filepath, "w"); //Then cycle through the files reading and writing. foreach($filepathsArray as $file){ $in = fopen($file, "r"); while ($line = fgets($in)){ print $file; fwrite($out, $line); } fclose($in); } //Then clean up fclose($out); return $filepath;