Список каталогов в PHP - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть функция php, которая позволяет мне удалять изображения из определенного каталога.Теперь моя проблема заключается в том, что в моем коде я вижу перечисленный файл index.php и хочу показывать только изображения под ним.Вот мой полный код:

$fid= $_POST['fid'];
    if (("submit")&&($fid != "")) {
    foreach($fid as $rfn) {
    $remove = "$dir/$rfn";
    unlink($remove);
    }
    }
    $handle=opendir($dir);
    while (($file = readdir($handle))!== false){
    if ($file != "." && $file != "..") {
    $size = filesize("$dir/$file");
    $list .= '<div class="col-md-3 text-center" style="margin-top:20px;">';
    $list .= '<img src="../inc/img/galeria/'.$file.'" class="rounded" width="100%" height="250px">';
    $list .= '<br><br>';
    $list .= '<input type="checkbox" class="form-control" name="fid[]" value="'.$file.'">';
    $list .= '</div>';
    }
    }
    closedir($handle);
    echo $list;

Теперь этот код работает просто отлично, проблема в том, что он перечисляет все внутри каталога, и я хочу показать только файлы jpg, jpeg, gif или png внутри этого каталога,Заранее спасибо, ребята.

Ответы [ 3 ]

0 голосов
/ 24 ноября 2018

Это исправляет проблему, спасибо вам, ребята, за советы!

$images = glob('/tmp/*.{jpeg,gif,png}', GLOB_BRACE);

А также:

// image extensions
$extensions = array('jpg', 'jpeg', 'png', 'gif', 'bmp');

// init result
$result = array();

// directory to scan
$directory = new DirectoryIterator('/dir/to/scan/');

// iterate
foreach ($directory as $fileinfo) {
    // must be a file
    if ($fileinfo->isFile()) {
        // file extension
        $extension = strtolower(pathinfo($fileinfo->getFilename(), PATHINFO_EXTENSION));
        // check if extension match
        if (in_array($extension, $extensions)) {
            // add to result
            $result[] = $fileinfo->getFilename();
        }
    }
}
// print result
print_r($result);

Это еще лучше, и мне удалось заставить его работать,кричит @pirateofmarmara, чтобы помочь мне в этом.

0 голосов
/ 24 ноября 2018

Вы можете попробовать следующее.Я надеюсь, что нет синтаксической ошибки.Я не запускал его.

foreach(glob($dir . "/*.{jpg,jpeg,png}", GLOB_BRACE) as $file) {
  // echo $file;
}
0 голосов
/ 24 ноября 2018

Это способ сканирования каталога и обработки только определенных файлов.Адаптируйте для своего использования:

$handle=opendir($dir);
while ( ($file = readdir($handle)) !== false ) {
    $ext = pathinfo($file, PATHINFO_EXTENSION);
    if ( in_array($file, ['.', '..']) || ! in_array($ext, ['jpeg', 'jpg', 'gif', 'png']) ) {
        continue;
    }
    // Do something with file
}
...