Предположим, что у меня есть каталог:
ABC |_ a1.txt |_ a2.txt |_ a3.txt |_ a4.txt |_ a5.txt
Как я могу использовать PHP для получения этих имен файлов в массиве, ограниченном определенным расширением файла и игнорированием каталогов?
Вы можете использовать функцию glob () :
Пример 01:
<?php // read all files inside the given directory // limited to a specific file extension $files = glob("./ABC/*.txt"); ?>
Пример 02:
<?php // perform actions for each file found foreach (glob("./ABC/*.txt") as $filename) { echo "$filename size " . filesize($filename) . "\n"; } ?>
Пример 03: Использование RecursiveIteratorIterator
<?php foreach(new RecursiveIteratorIterator( new RecursiveDirectoryIterator("../")) as $file) { if (strtolower(substr($file, -4)) == ".txt") { echo $file; } } ?>
Попробуй это:
if ($handle = opendir('.')) { $files=array(); while (false !== ($file = readdir($handle))) { if(is_file($file)){ $files[]=$file; } } closedir($handle); }
scandir
перечисляет файлы и каталоги внутри указанного пути.
Вот наиболее эффективный способ, основанный на тестах этой статьи :
function getAllFiles() { $files = array(); $dir = opendir('/ABC/'); while (($currentFile = readdir($dir)) !== false) { if (endsWith($currentFile, '.txt')) $files[] = $currentFile; } closedir($dir); return $files; } function endsWith($haystack, $needle) { return substr($haystack, -strlen($needle)) == $needle; }
просто используйте функцию getAllFiles (), и вы даже можете изменить ее, чтобы получить путь к папке и / или требуемые расширения, это легко.
Помимо scandir (@miku), вы также можете найти глобус, интересный для сопоставления подстановочных знаков.
Если ваши текстовые файлы – все, что у вас есть внутри папки, самый простой способ – использовать scandir, например:
<?php $arr=scandir('ABC/'); ?>
Если у вас есть другие файлы, вы должны использовать glob, как в ответе Лоуренса.
$dir = "your folder url"; //give only url, it shows all folder data if (is_dir($dir)){ if ($dh = opendir($dir)){ while (($file = readdir($dh)) !== false){ if($file != '.' and $file != '..'){ echo $file .'<br>'; } } closedir($dh); } }
вывод:
xyz abc 2017 motopress