За последние 24 часа нас посетили 16207 программистов и 1668 роботов. Сейчас ищут 867 программистов ...

Вывод содержимого файлов по порядку в div

Тема в разделе "PHP для новичков", создана пользователем a567k, 24 июл 2016.

  1. a567k

    a567k Новичок

    С нами с:
    24 июл 2016
    Сообщения:
    31
    Симпатии:
    0
    Доброго времени суток! Необходимо сделать вывод содержимого (текст) файлов из папки, каждый файл в отдельный div на одной странице в список, с сохранением порядка по дате.

    Заранее благодарю за помощь!
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    glob() - получение списка файлов
    filectime() - дата создания (windows) или изменения (unix) файла
    Можно составить массив вида
    Код (Text):
    1. имя файла => время, имя файла => время....
    asort() - сортировка массива с сохранением ключей.
     
  3. a567k

    a567k Новичок

    С нами с:
    24 июл 2016
    Сообщения:
    31
    Симпатии:
    0
    Я начинающий в php и делаю многие вещи по-сути из кусков различных кодов найденный в сети.
    Есть такой код, он выводит ссылки на все файлы htm из папки glagol в список на страницу.
    Подскажите, что нужно дописать/исправить для вывода списка содержимого всех файлов в отдельные div-ы, далее я буду разбираться сам, в смысле сортировка и т.д.

    Код (Text):
    1. <?PHP
    2. $dir = './glagol';
    3. $f = scandir($dir);
    4.  
    5. foreach ($f as $file){
    6.     if(preg_match('/\.(htm)/', $file)){
    7.         if (basename($file) == '') continue;
    8.         echo "<a href=$dir/$file>$file</a>";
    9.     }
    10. }
    11. ?>
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Код (Text):
    1. $data = file_get_contents("$dir/$file");
    и выводить $data
     
  5. a567k

    a567k Новичок

    С нами с:
    24 июл 2016
    Сообщения:
    31
    Симпатии:
    0
    Может что-то не верно, но ничего не вышло!?

    Код (Text):
    1. <?PHP
    2. $dir = './glagol';
    3. $f = scandir($dir);
    4. $data = file_get_contents("$dir/$file");
    5. foreach ($f as $file){
    6.     if(preg_match('/\.(htm)/', $file)){
    7.         if (basename($file) == '') continue;
    8.         echo "<div>$data</div>";
    9.     }
    10. }
    11. ?>
     
  6. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Я бы использовал DirectoryIterator
    PHP:
    1. <?php
    2. $iterator = new \DirectoryIterator('path/to/dir/');
    3. $files = [];
    4. foreach ($iterator as $fileinfo) {
    5.   if ($fileinfo->isFile()) {
    6.       $files[$fileinfo->getMTime()] = file_get_contents($fileinfo->getPathname());
    7.   }
    8. }
    9. ksort($files);
    10. // дальше - выводим в цикле
     
    denis01 нравится это.
  7. a567k

    a567k Новичок

    С нами с:
    24 июл 2016
    Сообщения:
    31
    Симпатии:
    0
    Благодарю всех за помощь, что-то прояснилось в голове, будут разбираться дальше!
     
  8. a567k

    a567k Новичок

    С нами с:
    24 июл 2016
    Сообщения:
    31
    Симпатии:
    0
    =========

    Я понял ошибку,

    Код (Text):
    1. <?PHP
    2. $dir = './';
    3. $f = scandir($dir);
    4. foreach ($f as $file){
    5.     $data = file_get_contents("$dir/$file");
    6.     if(preg_match('/\.(htm)/', $file)){
    7.         if (basename($file) == '') continue;
    8.         echo "<div>$data</div>";
    9.     }
    10. }
    11. ?>
    просто строку не туда вставил .... но не могу понять ошибку
    Warning: file_get_contents(.//.): failed to open stream: Permission denied in E:\program\xampp\htdocs\glagol\index1.php on line 5 ....
    а чем предложенный способ лучше!?
     
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    для оптимизации надо file_get_contents перенести в if.

    file_get_contents запросил файл или папку к которому нет доступа,
    думаю там путь с ошибкой, надо его посмотреть, например так
    PHP:
    1. echo "$dir/$file";
    это в foreach можно поставить

    современно, молодёжно, модно, свежо, красиво - вот сколько плюсов, вывод используй и ООП подход, по идее там и другие есть возможности (https://secure.php.net/manual/ru/class.directoryiterator.php), больше чем у scandir.
     
  10. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Самое время перейти к агрегаторам итераторов
    --- Добавлено ---
    нет прав на чтение файла, см. chmod
     
  11. a567k

    a567k Новичок

    С нами с:
    24 июл 2016
    Сообщения:
    31
    Симпатии:
    0
    Нет, дело не в этом оказалось, просто строку перенёс .... всё заработало
     
  12. a567k

    a567k Новичок

    С нами с:
    24 июл 2016
    Сообщения:
    31
    Симпатии:
    0
    "Наковырял повсюду по нитке" и получил нечто для создания простого блога, чем я сейчас занимаюсь, может кому-то пригодится. Суть такая. Скрипт вытаскивает фалы htm из папки, удаляет из них все теги и выдаёт текст в div, по списку, но не по порядку новые/старые. Содержимое снабжается ссылкой и очищается от мусора. Пожалуй с порядком надо разбираться, это массив я полагаю!? Да всех помощников благодарю, всегда солидарен с вами! Если у кого-то будут предложения по данному скрипу, буду рад дальше шевелить мозгами, как новичок.

    Код (Text):
    1. <?PHP
    2. $dir = './';
    3. $f = scandir($dir);
    4.  
    5. function file_get_contents_utf8($fn) {
    6.      $content = file_get_contents("$fn",NULL,NULL, -1, 1024);
    7.       return mb_convert_encoding($content, 'UTF-8');
    8.       mb_detect_encoding($content, 'UTF-8, WINDOWS-1251', true);
    9. }
    10.  
    11. foreach ($f as $file){
    12.     if(preg_match('/\.(htm)/', $file)){
    13.         $data = file_get_contents_utf8("$dir/$file");
    14.         if (basename($file) == '') continue;
    15.         echo "<div style=\"float:left;width:100%;border:1px#000solid;padding:1%;margin:0%0%1%0%\">";
    16.         echo strip_tags($data);
    17.         echo "<br>";
    18.         echo "<b>Читать целиком:</b> ";
    19.         echo "<a href=$dir/$file>";
    20.         echo "$file";
    21.         echo "</a><br>";
    22.         echo "</div>";
    23.      
    24.     }
    25. }
    26. ?>
     
  13. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @a567k лучше книги по HTML, CSS, PHP, MySQL для начинающих почитай.
     
    Deonis нравится это.