Ответ 1
Попробуйте glob
Что-то вроде:
foreach(glob('./images/*.*') as $filename){
echo $filename;
}
Я пытаюсь найти способ перечислить все файлы, содержащиеся в каталоге. Я не очень хорошо разбираюсь в php, чтобы решить эту проблему самостоятельно, поэтому, надеюсь, кто-то здесь может помочь мне.
Мне нужен простой php script, который будет загружать все имена файлов, содержащиеся в моем каталоге изображений, в массив. Любая помощь будет принята с благодарностью, спасибо!
Попробуйте glob
Что-то вроде:
foreach(glob('./images/*.*') as $filename){
echo $filename;
}
scandir()
- Список файлов и каталогов внутри указанного пути
$images = scandir("images", 1);
print_r($images);
Выдает:
Array
(
[0] => apples.jpg
[1] => oranges.png
[2] => grapes.gif
[3] => ..
[4] => .
)
Либо scandir()
, как предложено в другом месте, или
glob()
- Найти пути, соответствующие шаблонуПример
$images = glob("./images/*.gif");
print_r($images);
/* outputs
Array (
[0] => 'an-image.gif'
[1] => 'another-image.gif'
)
*/
Или, чтобы перемещаться по файлам в каталоге напрямую, а не получать массив, используйте
Пример
foreach (new DirectoryIterator('.') as $item) {
echo $item, PHP_EOL;
}
Чтобы перейти в подкаталоги, используйте RecursiveDirectoryIterator:
$items = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('.'),
RecursiveIteratorIterator::SELF_FIRST
);
foreach($items as $item) {
echo $item, PHP_EOL;
}
Чтобы указать только имена файлов (каталоги w\out), удалите RecursiveIteratorIterator::SELF_FIRST
Вы также можете использовать Стандартную библиотеку PHP DirectoryIterator
, в частности метод getFilename
:
$dir = new DirectoryIterator("/path/to/images");
foreach ($dir as $fileinfo) {
echo $fileinfo->getFilename() . "\n";
}
Это даст вам все файлы в ссылках.
<?php
$path = $_SERVER['DOCUMENT_ROOT']."/your_folder/";
$files = scandir($path);
$count=1;
foreach ($files as $filename)
{
if($filename=="." || $filename==".." || $filename=="download.php" || $filename=="index.php")
{
//this will not display specified files
}
else
{
echo "<label >".$count.". </label>";
echo "<a href="download.php/?filename=".$filename."">".$filename."</a>
";
$count++;
}
}
?>
Возможно, эта функция может быть полезна в будущем. Вы можете манипулировать функцией, если вам нужно эхо-вещи или хотите сделать другие вещи.
$wavs = array();
$wavs = getAllFiles('folder_name',$wavs,'wav');
$allTypesOfFiles = array();
$wavs = getAllFiles('folder_name',$allTypesOfFiles);
//explanation of arguments from the getAllFiles() function
//$dir -> folder/directory you want to get all the files from.
//$allFiles -> to store all the files in and return in the and.
//$extension -> use this argument if you want to find specific files only, else keept empty to find all type of files.
function getAllFiles($dir,$allFiles,$extension = null){
$files = scandir($dir);
foreach($files as $file){
if(is_dir($dir.'/'.$file)) {
$allFiles = getAllFiles($dir.'/'.$file,$allFiles,$extension);
}else{
if(empty($extension) || $extension == pathinfo($dir.'/'.$file)['extension']){
array_push($allFiles,$dir.'/'.$file);
}
}
}
return $allFiles;
}