Как прочитать список файлов из папки с помощью PHP? - PullRequest
38 голосов
/ 06 апреля 2009

Я хочу прочитать список имен файлов в папке на веб-странице, используя php. Есть ли простой скрипт для его достижения?

Ответы [ 10 ]

102 голосов
/ 06 апреля 2009

Самый простой и забавный способ (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 . Если вы заинтересованы

12 голосов
/ 29 октября 2014

Есть эта функция scandir () :

$dir = 'dir';
$files = scandir($dir, 0);
for($i = 2; $i < count($files); $i++)
    print $files[$i]."<br>";

Подробнее здесь, в руководстве по php.net

11 голосов
/ 29 октября 2014

Это то, что я люблю делать:

$files = array_values(array_filter(scandir($path), function($file) use ($path) { 
    return !is_dir($path . '/' . $file);
}));

foreach($files as $file){
    echo $file;
}
2 голосов
/ 04 августа 2013

Есть шар. На этой странице есть хорошая статья о том, как очень просто составить список файлов:

Как прочитать список файлов из папки с помощью PHP

2 голосов
/ 29 апреля 2013

Если у вас есть проблемы с доступом к пути, возможно, вам нужно поставить это:

$root = $_SERVER['DOCUMENT_ROOT'];
$path = "/cv/"; 

// Open the folder
 $dir_handle = @opendir($root . $path) or die("Unable to open $path");
1 голос
/ 20 января 2016

Вы можете использовать стандартные функции каталога

$dir = opendir('/tmp');
while ($file = readdir($dir)) {
    if ($file == '.' || $file == '..') {
        continue;
    }

    echo $file;
}
closedir($dir);
1 голос
/ 11 января 2015

Проверка во многих папках:

Папка_1 и папка_2 - это имена папок, из которых мы должны выбирать файлы.

Требуется формат $.

<?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>";
    }
}
?>
0 голосов
/ 03 декабря 2016
<html>
<head>
<title>Names</title>
</head>
<body style="background-color:powderblue;">

<form method='post' action='alex.php'>
 <input type='text' name='name'>
<input type='submit' value='name'>
</form>
Enter Name:
<?php

  if($_POST)
  {
  $Name = $_POST['name'];
  $count = 0;
  $fh=fopen("alex.txt",'a+') or die("failed to create");
  while(!feof($fh))
  {
    $line = chop(fgets($fh));
    if($line==$Name && $line!="")
    $count=1;
  }
  if($count==0 && $Name!="")
  {
    fwrite($fh, "\r\n$Name"); 
 }
  else if($count!=0 && $line!="") 
  { 
    echo '<font color="red">'.$Name.', the name you entered is already in the list.</font><br><br>';
  }
  $count=0;
  fseek($fh, 0);
  while(!feof($fh))
  {
    $a = chop(fgets($fh));
    echo $a.'<br>';
    $count++;
  }
  if($count<=1)
  echo '<br>There are no names in the list<br>';
  fclose($fh);
  }
?>
</body>
</html>
0 голосов
/ 31 мая 2016

Существует также очень простой способ сделать это с помощью класса RecursiveTreeIterator, ответ здесь: https://stackoverflow.com/a/37548504/2032235

0 голосов
/ 05 января 2016
<?php
    $files = glob("images/*.*"); 
    for ($i=0; $i<count($files); $i++) { // $i mean to start first files names.
    $num = $files[$i];
    echo '<img src="'.$num.'" />'."<br />\n";
}
?>

images / означает для вашего каталога изображений. Переменная $ i = 0 находит файлы изображений . и будет первым именем файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...