Как получить имя файла под папкой?

Предположим, что у меня есть каталог:

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