Я не хочу проверять все файлы в каталоге и его подкаталоге. И получите их путь в массиве. Как путь к файлу в каталоге в массиве будет просто
путь -> text.txt
- Доктрина - подзапрос из
- Как найти Duplicate значения в массиве с помощью php?
- Невозможно загрузить динамическую библиотеку php_ldap.dll в среду Windows
- Как передать переменные, полученные в строке GET через перенаправление заголовка php?
- Как использовать getenv () в php и SetEnv в .htaccess с скомпилированным php-cgi на общем хосте
- Я хотел бы выбрать случайное видео YouTube из базы данных MySQL и отобразить его на моей веб-странице
в то время как путь к файлу в подкаталоге будет
somedirectory / text.txt
Я могу сканировать один каталог, но он возвращает все файлы и подкаталоги без каких-либо различий.
if ($handle = opendir('fonts/')) { /* This is the correct way to loop over the directory. */ while (false !== ($entry = readdir($handle))) { echo "$entry<br/>"; } closedir($handle); }
Каков наилучший способ получить все файлы в каталоге и подкаталоге с его путем?
Использование DirectoryIterator из SPL, вероятно, лучший способ сделать это:
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('.')); foreach ($it as $file) echo $file."\n";
$file
– это объект SPLFileInfo. Его метод __toString () даст вам имя файла, но есть и другие полезные методы!
Для получения дополнительной информации см .: http://www.php.net/manual/en/class.recursivedirectoryiterator.php
Используйте is_file()
и is_dir()
:
function getDirContents($dir) { $handle = opendir($dir); if ( !$handle ) return array(); $contents = array(); while ( $entry = readdir($handle) ) { if ( $entry=='.' || $entry=='..' ) continue; $entry = $dir.DIRECTORY_SEPARATOR.$entry; if ( is_file($entry) ) { $contents[] = $entry; } else if ( is_dir($entry) ) { $contents = array_merge($contents, getDirContents($entry)); } } closedir($handle); return $contents; }