Список всех изображений в каталоге с помощью PHP

У меня есть код ниже, в котором перечислены все изображения в папке, проблема в том, что он находит некоторые файлы (a. И a ..), что я не уверен, что это такое, поэтому я не уверен, как предотвратить их появление , Я нахожусь на машине Windows XP , любая помощь будет отличной, спасибо.

Ошибки: предупреждение: переименовать (images /., Images /.) [Function.rename]: нет ошибки в C: \ wamp \ www \ Testing \ listPhotosA.php в строке 14

Предупреждение: rename (images / .., images / ..) [function.rename]: Ошибка в C: \ wamp \ www \ Testing \ listPhotosA.php в строке 14

Код:

<?php define('IMAGEPATH', 'images/'); if (is_dir(IMAGEPATH)){ $handle = opendir(IMAGEPATH); } else{ echo 'No image directory'; } $directoryfiles = array(); while (($file = readdir($handle)) !== false) { $newfile = str_replace(' ', '_', $file); rename(IMAGEPATH . $file, IMAGEPATH . $newfile); $directoryfiles[] = $newfile; } foreach($directoryfiles as $directoryfile){ if(strlen($directoryfile) > 3){ echo '<img src="' . IMAGEPATH . $directoryfile . '" alt="' . $directoryfile . '" /> <br>'; } } closedir($handle); ?> 

Мне нравится функция glob PHP.

 foreach(glob(IMAGEPATH.'*') as $filename){ echo basename($filename) . "\n"; } 

glob () чувствителен к регистру, и подстановочный знак * вернет все файлы, поэтому я указал расширение здесь, так что вам не нужно выполнять фильтрацию

 $d = 'path/to/images/'; foreach(glob($d.'*.{jpg,JPG,jpeg,JPEG,png,PNG}',GLOB_BRACE) as $file){ $imag[] = basename($file); } 

Используйте функцию glob.

 <?php define('IMAGEPATH', 'images/'); foreach(glob(IMAGEPATH.'*') as $filename){ $imag[] = basename($filename); } print_r($imag); ?> 

Вы получили все изображения в формате массива

Чтобы получить все jpg-изображения во всех каталогах и поддиректориях внутри папки:

 function getAllDirs($directory, $directory_seperator) { $dirs = array_map(function ($item) use ($directory_seperator) { return $item . $directory_seperator; }, array_filter(glob($directory . '*'), 'is_dir')); foreach ($dirs AS $dir) { $dirs = array_merge($dirs, getAllDirs($dir, $directory_seperator)); } return $dirs; } function getAllImgs($directory) { $resizedFilePath = array(); foreach ($directory AS $dir) { foreach (glob($dir . '*.jpg') as $filename) { array_push($resizedFilePath, $filename); } } return $resizedFilePath; } $directory = "C:/xampp/htdocs/images/"; $directory_seperator = "/"; $$allimages = getAllImgs(getAllDirs($directory, $directory_seperator)); 

Использование функции scan_dir функции balphp: http://github.com/balupton/balphp/blob/master/trunk/lib/core/functions/_scan_dir.funcs.php

scan_dir($dirPath, array('pattern'=>'image'));

Вернет массив всех файлов, являющихся изображениями этого пути и всех подкаталогов, используя структуру $path => $filename . Чтобы отключить подкаталоги сканирования, установите для параметра recurse значение false

Для чтения изображений из папки используйте следующий код.

 function readDataFromImageFolder() { $imageFolderName = 14; $base = dirname(__FILE__); $dirname = $base.DS.'images'.DS.$imageFolderName.DS; $files = array(); if (!file_exists($dirname)) { echo "The directory $dirname not exists.".PHP_EOL; exit; } else { echo "The directory $dirname exists.".PHP_EOL; $dh = opendir( $dirname ); while (false !== ($filename = readdir($dh))) { if ($filename === '.' || $filename === '..') continue; $files[] = $dirname.$filename; } uploadImages( $files ); } } 

Пожалуйста, нажмите здесь для подробного объяснения. http://www.pearlbells.co.uk/code-snippets/read-images-folder-php/

 while (($file = readdir($handle)) !== false) { if ( ($file == '.')|| ($file == '..') ) { continue; } $newfile = str_replace(' ', '_', $file); rename(IMAGEPATH . $file, IMAGEPATH . $newfile); $directoryfiles[] = $newfile; }