Я пытаюсь прочитать все *.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;