Доброго времени суток! Необходимо сделать вывод содержимого (текст) файлов из папки, каждый файл в отдельный div на одной странице в список, с сохранением порядка по дате. Заранее благодарю за помощь!
glob() - получение списка файлов filectime() - дата создания (windows) или изменения (unix) файла Можно составить массив вида Код (Text): имя файла => время, имя файла => время.... asort() - сортировка массива с сохранением ключей.
Я начинающий в php и делаю многие вещи по-сути из кусков различных кодов найденный в сети. Есть такой код, он выводит ссылки на все файлы htm из папки glagol в список на страницу. Подскажите, что нужно дописать/исправить для вывода списка содержимого всех файлов в отдельные div-ы, далее я буду разбираться сам, в смысле сортировка и т.д. Код (Text): <?PHP $dir = './glagol'; $f = scandir($dir); foreach ($f as $file){ if(preg_match('/\.(htm)/', $file)){ if (basename($file) == '') continue; echo "<a href=$dir/$file>$file</a>"; } } ?>
Может что-то не верно, но ничего не вышло!? Код (Text): <?PHP $dir = './glagol'; $f = scandir($dir); $data = file_get_contents("$dir/$file"); foreach ($f as $file){ if(preg_match('/\.(htm)/', $file)){ if (basename($file) == '') continue; echo "<div>$data</div>"; } } ?>
Я бы использовал DirectoryIterator PHP: <?php $iterator = new \DirectoryIterator('path/to/dir/'); $files = []; foreach ($iterator as $fileinfo) { if ($fileinfo->isFile()) { $files[$fileinfo->getMTime()] = file_get_contents($fileinfo->getPathname()); } } ksort($files); // дальше - выводим в цикле
========= Я понял ошибку, Код (Text): <?PHP $dir = './'; $f = scandir($dir); foreach ($f as $file){ $data = file_get_contents("$dir/$file"); if(preg_match('/\.(htm)/', $file)){ if (basename($file) == '') continue; echo "<div>$data</div>"; } } ?> просто строку не туда вставил .... но не могу понять ошибку Warning: file_get_contents(.//.): failed to open stream: Permission denied in E:\program\xampp\htdocs\glagol\index1.php on line 5 .... а чем предложенный способ лучше!?
для оптимизации надо file_get_contents перенести в if. file_get_contents запросил файл или папку к которому нет доступа, думаю там путь с ошибкой, надо его посмотреть, например так PHP: echo "$dir/$file"; это в foreach можно поставить современно, молодёжно, модно, свежо, красиво - вот сколько плюсов, вывод используй и ООП подход, по идее там и другие есть возможности (https://secure.php.net/manual/ru/class.directoryiterator.php), больше чем у scandir.
"Наковырял повсюду по нитке" и получил нечто для создания простого блога, чем я сейчас занимаюсь, может кому-то пригодится. Суть такая. Скрипт вытаскивает фалы htm из папки, удаляет из них все теги и выдаёт текст в div, по списку, но не по порядку новые/старые. Содержимое снабжается ссылкой и очищается от мусора. Пожалуй с порядком надо разбираться, это массив я полагаю!? Да всех помощников благодарю, всегда солидарен с вами! Если у кого-то будут предложения по данному скрипу, буду рад дальше шевелить мозгами, как новичок. Код (Text): <?PHP $dir = './'; $f = scandir($dir); function file_get_contents_utf8($fn) { $content = file_get_contents("$fn",NULL,NULL, -1, 1024); return mb_convert_encoding($content, 'UTF-8'); mb_detect_encoding($content, 'UTF-8, WINDOWS-1251', true); } foreach ($f as $file){ if(preg_match('/\.(htm)/', $file)){ $data = file_get_contents_utf8("$dir/$file"); if (basename($file) == '') continue; echo "<div style=\"float:left;width:100%;border:1px#000solid;padding:1%;margin:0%0%1%0%\">"; echo strip_tags($data); echo "<br>"; echo "<b>Читать целиком:</b> "; echo "<a href=$dir/$file>"; echo "$file"; echo "</a><br>"; echo "</div>"; } } ?>