За последние 24 часа нас посетили 19850 программистов и 1643 робота. Сейчас ищет 1841 программист ...

Список имен файлов

Тема в разделе "PHP для новичков", создана пользователем Gennadiy, 14 дек 2012.

  1. Gennadiy

    Gennadiy Активный пользователь

    С нами с:
    24 дек 2010
    Сообщения:
    40
    Симпатии:
    0
    Нужно сделать список файлов из папки
    <?php
    $dh = opendir("images/temp");
    while (false !== ($filename=readdir($dh)))
    {
    echo 'images/temp/'.$filename.', ';
    }
    ?>
    получается:
    images/temp/., images/temp/.., images/temp/Untitled-1 - Copy (2).png, images/temp/Untitled-1 - Copy (3).png, images/temp/Untitled-1 - Copy.png, images/temp/Untitled-1.png,

    не получаеться убрать первые два images/temp/., images/temp/.., и запятую в конце всей строки
    спасибо!
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
  3. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Код (PHP):
    1. $files = array();
    2. $dh  = opendir("images/temp");
    3. while (false !== ($filename = readdir($dh))) {
    4.  if ($filename=='.' || $filename=='..') continue;
    5.  $files[] = $filename;
    6. }
    7. echo '<pre>';
    8. print_r($files); 
     
  4. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Проверить что не является директрорией через функцию is_file.
    И поправить:
    Код (Text):
    1. $flist = array();
    2. while (false !== ($filename=readdir($dh)))
    3. {
    4. $flist[] =  'images/temp/'.$filename;
    5. }
    6. // объединить эл-ты массива в строку
    7. echo implode(", ", $flist);
    или просто не добавлять запятую если на последнем эл-те находимся. я бы сделал через implode =)

    Добавлено спустя 38 секунд:
    Меня опередили :)
     
  5. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.119
    Симпатии:
    1.245
    Адрес:
    там-сям
    Gennadiy, это не первый ваш пост здесь. Вы правда не знаете про тег [ code=php ] ? Это элементарная вежливость. Будет удобнее вам помогать если Вы оформите всё правильно.

    Код (PHP):
    1. <?php
    2. $dh = opendir("images/temp");
    3. $filenames = array();
    4. while (false !== ($filename=readdir($dh)))
    5. {
    6.     if ($filename{0} != '.')
    7.         $filenames[] = $filename;
    8. }
    9. closedir($dh);
    10.  
    11. echo implode(', ', $filenames);
    12.  
    P.S. LOL ))) опередили аж двое. мой пример правильнее тем, что
    1. я не забыл закрыть хэндл. формально так правильнее.
    2. кроме коварных "." и ".." есть целое семейство файлов и папок, которые не принято светить. в мире Юникс их имена начинаются с точки.

    автор не говорил, что надо отбрасывать имена папок, поэтому они сюда попадут, если встретятся. а вообще можно их отсечь с помощью функции is_file() или is_dir().
     
  6. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. define('SLASH',DIRECTORY_SEPARATOR); # \
    2. define('DIRECTORY',dirname(__FILE__).SLASH); 
    Код (PHP):
    1. foreach(glob(DIRECTORY.'images'.SLASH.'*.png') as $val) {
    2.     echo nl2br('dirname: '.DIRECTORY.
    3.                 file: '.basename($val).'
    4.     ');
    5. } 
    :D


    Код (PHP):
    1. foreach(glob(DIRECTORY.'images'.SLASH.'*') as $val) {
    2.     $file=getimagesize($val);
    3.     if($file) {
    4.         echo nl2br('dirname: '.DIRECTORY.
    5.                     file: '.basename($val).'
    6.                     type: '.$file['mime'].'
    7.                     .........................
    8.         ');
    9.     }
    10. } 
     
  7. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
  8. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.119
    Симпатии:
    1.245
    Адрес:
    там-сям
    а вы о чём?
     
  9. Gennadiy

    Gennadiy Активный пользователь

    С нами с:
    24 дек 2010
    Сообщения:
    40
    Симпатии:
    0
    спасибо glob помогло

    невыходит с удалением последнего символа
    Код (Text):
    1. $strpatch = $image.', ';
    2. $str = $strpatch;
    3. echo substr($str, 0, -1);
    удаляеться запятая в конце каждой переменной
    Код (Text):
    1. images/temp/1.png,images/temp/2.png,images/temp/3.png,images/temp/4.png,  
    нужно в конце всей строки
    Код (Text):
    1. images/temp/1.png, images/temp/2.png, images/temp/3.png, images/temp/4.png
     
  10. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Код (PHP):
    1. $flist = array();
    2. while (false !== ($filename=readdir($dh))) 
    3. {
    4. $flist[] =  'images/temp/'.$filename;
    5. }
    6. // объединить эл-ты массива в строку.
    7. echo implode(", ", $flist); 
    Получишь список через запятую как нужно.
     
  11. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Естественно так не будет работать:

    Код (PHP):
    1. foreach(glob('images'.SLASH.'*.png') as $val) {
    2.     $val=$val.',';
    3.     echo substr($val,0,-1);
    4. } 
    А так будет:

    Код (PHP):
    1. $value='';
    2. foreach(glob('images'.SLASH.'*.png') as $val) {
    3.     $value.=$val.',';
    4. }
    5. echo substr($value,0,-1);