Я хочу прочитать список имен файлов в папке на веб-странице, используя php. есть ли простой скрипт для его достижения?
Как прочитать список файлов из папки с помощью PHP?
Ответы (9)
Самый простой и интересный способ (imo) - glob
foreach (glob("*.*") as $filename) {
echo $filename."<br />";
}
Но стандартный способ — использовать функции каталога.
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
echo "filename: .".$file."<br />";
}
closedir($dh);
}
}
Существуют также методы SPL DirectoryIterator. Если ты заинтересован
$dir = getcwd();
получает текущий рабочий каталог.
- person Avatar; 20.09.2018
!== false
?
- person RaminS; 19.02.2019
Есть такая функция scandir():
$dir = 'dir';
$files = scandir($dir, 0);
for($i = 2; $i < count($files); $i++)
print $files[$i]."<br>";
Подробнее здесь, в руководстве по php.net
Вот что я люблю делать:
$files = array_values(array_filter(scandir($path), function($file) use ($path) {
return !is_dir($path . '/' . $file);
}));
foreach($files as $file){
echo $file;
}
Если у вас проблемы с доступом к пути, возможно, вам нужно поставить это:
$root = $_SERVER['DOCUMENT_ROOT'];
$path = "/cv/";
// Open the folder
$dir_handle = @opendir($root . $path) or die("Unable to open $path");
Есть глобус. На этой веб-странице есть хорошая статья о том, как очень просто перечислить файлы:
Как прочитать список файлов из папки с помощью PHP< /а>
Отметить во многих папках:
Папка_1 и папка_2 — это названия папок, из которых мы должны выбрать файлы.
$format является обязательным форматом.
<?php
$arr = array("folder_1","folder_2");
$format = ".csv";
for($x=0;$x<count($arr);$x++){
$mm = $arr[$x];
foreach (glob("$mm/*$format") as $filename) {
echo "$filename size " . filesize($filename) . "<br>";
}
}
?>
Вы можете использовать стандартные функции каталога
$dir = opendir('/tmp');
while ($file = readdir($dir)) {
if ($file == '.' || $file == '..') {
continue;
}
echo $file;
}
closedir($dir);
Существует также очень простой способ сделать это с помощью класса RecursiveTreeIterator
, ответ здесь: https://stackoverflow.com/a/37548504/2032235