У меня есть код ниже, в котором перечислены все изображения в папке, проблема в том, что он находит некоторые файлы (a. И a ..), что я не уверен, что это такое, поэтому я не уверен, как предотвратить их появление , Я нахожусь на машине Windows XP , любая помощь будет отличной, спасибо.
Ошибки: предупреждение: переименовать (images /., Images /.) [Function.rename]: нет ошибки в C: \ wamp \ www \ Testing \ listPhotosA.php в строке 14
- WideImage - Прозрачные области конвертированного PNG должны быть белыми
- regexp для поиска файла пути изображения в теге изображения
- Использование PHP для создания скриншотов из источника HTML
- php изменение размера изображения при загрузке
- Другая проблема с правами доступа к файлам
Предупреждение: 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; }