могут быть другие способы сделать это, но я ищу довольно легкую настройку, потому что это в основном одноразовый процесс.PHP readfile или file_get_contents в цикле
У меня есть 50 штатных каталогов с несколькими текстовыми файлами в каждом из них.
Я хочу шагнуть в каждой директории, «читать» каждый файл (а затем сделать MySQL вставки каждого файла)
Я попробовал несколько вариантов, но каждый раз, когда я пытаюсь Переберите и использовать readfile или file_get_contents он ломается после первого файла, и мне не удается открыть поток: ошибки в оставшейся части списка.
Я искал подводные камни использования этих функций в петле, ожидая многих причин, почему бы и нет, но не получения ответов.
спасибо вернулся, чтобы добавить пример кода. Я вижу, что есть ответ, поэтому я также проверю это. (ни один из них не принадлежит мне, я просто нашел функцию для записи списка файлов)
function listFilesInDir($start_dir) { /* returns an array of files in $start_dir (not recursive) */ $files = array(); $dir = opendir($start_dir); while(($myfile = readdir($dir)) !== false) { if($myfile != '.' && $myfile != '..') { $files[] = $myfile; } } closedir($dir); return $files; } $dir = 'path/to/files'; $Docs = listFilesInDir($dir); foreach($Docs as $key => $fileName) { // HERE IS WHERE I TRIED THE file_get_contents $content = file_get_contents($fileName); //even doing an echo as a test would break it after the first file echo $content; //ultimately I would just do INSERT INTO here for mysql }
Спасибо! Это решение получило трюк. Никаких изменений не было необходимости, кроме как подключить мой путь ... и я добавлю код вставки. Думаю, только для моих собственных целей обучения я вижу, что $ file-> getPathname()); было что-то, что я должен был прочитать. –
DirectoryIterator - один из полезных классов SPL, добавленных в php5. метод getPathname предоставляет полный путь файловой системы к файлу или каталогу под вопросом 'getFilename', давая вам имя файла/dir, а' getPath' вы получите только путь к файлу/директорию. Также, если вы использовали это в качестве своего решения, можете ли вы отметить это как ответ - или вы ждете дополнительных технических подробностей о том, что ваш код не работает? – prodigitalson
Да, я могу отметить это как ответ - довольно новый для SO-системы, поэтому я не был уверен, как это работает. (и извините за задержку в моих ответах, я не получал никаких уведомлений по электронной почте о деятельности). Если кто-то хотел добавить некоторую информацию о том, почему другой метод был неудачным, я бы счел это полезным, но я бы не считал это открытым без ответа для этого. еще раз благодарю вас, я часто нуждаюсь в таких ответах для различных проектов, и я считаю, что переполнение стека очень полезно. –