Hướng dẫn how to get all file names in a folder in php - cách lấy tất cả các tên tệp trong một thư mục trong php

100

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Vì một số lý do, tôi tiếp tục nhận được '1' cho các tên tệp với mã này:

if (is_dir($log_directory))
{
    if ($handle = opendir($log_directory))
    {
        while($file = readdir($handle) !== FALSE)
        {
            $results_array[] = $file;
        }
        closedir($handle);
    }
}

Khi tôi lặp lại từng phần tử trong $ results_array, tôi nhận được một loạt các '1, không phải tên của tệp. Làm cách nào để lấy tên của các tệp?

Hướng dẫn how to get all file names in a folder in php - cách lấy tất cả các tên tệp trong một thư mục trong php

Khi được hỏi ngày 27 tháng 5 năm 2010 lúc 16:31May 27, 2010 at 16:31

5

Đừng bận tâm với Open/ReadDir và sử dụng

foreach(glob($log_directory.'/*.*') as $file) {
    ...
}
5 thay thế:

foreach(glob($log_directory.'/*.*') as $file) {
    ...
}

Kamal Pal

4.1495 Huy hiệu vàng24 Huy hiệu bạc39 Huy hiệu Đồng5 gold badges24 silver badges39 bronze badges

Đã trả lời ngày 27 tháng 5 năm 2010 lúc 16:35May 27, 2010 at 16:35

Tatu Ulmanentatu UlmanenTatu Ulmanen

121K34 Huy hiệu vàng183 Huy hiệu bạc183 Huy hiệu Đồng34 gold badges183 silver badges183 bronze badges

7

Phong cách SPL:

foreach (new DirectoryIterator(__DIR__) as $file) {
  if ($file->isFile()) {
      print $file->getFilename() . "\n";
  }
}

Kiểm tra các lớp thư mục và splfileinfo để biết danh sách các phương thức có sẵn mà bạn có thể sử dụng.

Đã trả lời ngày 23 tháng 9 năm 2014 lúc 6:36Sep 23, 2014 at 6:36

IlijailijaIlija

3.9904 Huy hiệu vàng31 Huy hiệu bạc46 Huy hiệu đồng4 gold badges31 silver badges46 bronze badges

2

Vì câu trả lời được chấp nhận có hai thiếu sót quan trọng, tôi đang đăng câu trả lời được cải thiện cho những người mới đang tìm kiếm một câu trả lời đúng:

foreach (array_filter(glob('/Path/To/*'), 'is_file') as $file)
{
    // Do something with $file
}
  1. Lọc kết quả chức năng
    foreach(glob($log_directory.'/*.*') as $file) {
        ...
    }
    
    6 với
    foreach(glob($log_directory.'/*.*') as $file) {
        ...
    }
    
    7 là cần thiết, bởi vì nó cũng có thể trả về một số thư mục.
  2. Không phải tất cả các tệp đều có
    foreach(glob($log_directory.'/*.*') as $file) {
        ...
    }
    
    8 trong tên của chúng, vì vậy, mẫu
    foreach(glob($log_directory.'/*.*') as $file) {
        ...
    }
    
    9 nói chung.

Đã trả lời ngày 16 tháng 1 năm 2016 lúc 18:52Jan 16, 2016 at 18:52

AliwwaliwebAliweb

1.8613 huy hiệu vàng21 Huy hiệu bạc43 Huy hiệu đồng3 gold badges21 silver badges43 bronze badges

2

Bạn cần bao quanh

foreach (new DirectoryIterator(__DIR__) as $file) {
  if ($file->isFile()) {
      print $file->getFilename() . "\n";
  }
}
0 với dấu ngoặc đơn.

Bạn đi đây:

$log_directory = 'your_dir_name_here';

$results_array = array();

if (is_dir($log_directory))
{
        if ($handle = opendir($log_directory))
        {
                //Notice the parentheses I added:
                while(($file = readdir($handle)) !== FALSE)
                {
                        $results_array[] = $file;
                }
                closedir($handle);
        }
}

//Output findings
foreach($results_array as $value)
{
    echo $value . '
'; }

Đã trả lời ngày 27 tháng 5 năm 2010 lúc 16:47May 27, 2010 at 16:47

Hướng dẫn how to get all file names in a folder in php - cách lấy tất cả các tên tệp trong một thư mục trong php

Mike Mooremike MooreMike Moore

6.92810 Huy hiệu vàng40 Huy hiệu bạc63 Huy hiệu Đồng10 gold badges40 silver badges63 bronze badges

0

Chỉ cần sử dụng

foreach (new DirectoryIterator(__DIR__) as $file) {
  if ($file->isFile()) {
      print $file->getFilename() . "\n";
  }
}
1. Đây là tài liệu

Đã trả lời ngày 27 tháng 5 năm 2010 lúc 16:34May 27, 2010 at 16:34

Fletcher Moorefletcher MooreFletcher Moore

13.3k11 Huy hiệu vàng38 Huy hiệu bạc57 Huy hiệu đồng11 gold badges38 silver badges57 bronze badges

Tôi có mã nhỏ hơn để làm điều này:

$path = "Pending2Post/";
$files = scandir($path);
foreach ($files as &$value) {
    echo "".$value."

"; }

Hướng dẫn how to get all file names in a folder in php - cách lấy tất cả các tên tệp trong một thư mục trong php

thân gỗ

1.3803 huy hiệu vàng18 Huy hiệu bạc25 Huy hiệu đồng3 gold badges18 silver badges25 bronze badges

Đã trả lời ngày 22 tháng 10 năm 2013 lúc 8:35Oct 22, 2013 at 8:35

Hướng dẫn how to get all file names in a folder in php - cách lấy tất cả các tên tệp trong một thư mục trong php

4

Trên một số hệ điều hành bạn nhận được

foreach(glob($log_directory.'/*.*') as $file) {
    ...
}
8
foreach (new DirectoryIterator(__DIR__) as $file) {
  if ($file->isFile()) {
      print $file->getFilename() . "\n";
  }
}
3 và
foreach (new DirectoryIterator(__DIR__) as $file) {
  if ($file->isFile()) {
      print $file->getFilename() . "\n";
  }
}
4, chúng ta không thể sử dụng chúng vì vậy chúng ta hãy che giấu chúng.

Đầu tiên bắt đầu nhận tất cả thông tin về các tệp, sử dụng

foreach (new DirectoryIterator(__DIR__) as $file) {
  if ($file->isFile()) {
      print $file->getFilename() . "\n";
  }
}
5

// Folder where you want to get all files names from
$dir = "uploads/";

/* Hide this */
$hideName = array('.','..','.DS_Store');    

// Sort in ascending order - this is default
$files = scandir($dir);
/* While this to there no more files are */
foreach($files as $filename) {
    if(!in_array($filename, $hideName)){
       /* echo the name of the files */
       echo "$filename
"; } }

Dika

2.0834 Huy hiệu vàng33 Huy hiệu bạc45 Huy hiệu Đồng4 gold badges33 silver badges45 bronze badges

Đã trả lời ngày 12 tháng 4 năm 2015 lúc 14:13Apr 12, 2015 at 14:13

Hướng dẫn how to get all file names in a folder in php - cách lấy tất cả các tên tệp trong một thư mục trong php

Đó là do độ chính xác của nhà điều hành. Thử thay đổi nó thành:

while(($file = readdir($handle)) !== FALSE)
{
    $results_array[] = $file;
}
closedir($handle);

Đã trả lời ngày 27 tháng 5 năm 2010 lúc 16:46May 27, 2010 at 16:46

IRCMaxELLIRCMAXELLircmaxell

161K33 Huy hiệu vàng260 Huy hiệu bạc313 Huy hiệu Đồng33 gold badges260 silver badges313 bronze badges

foreach (new DirectoryIterator(__DIR__) as $file) {
  if ($file->isFile()) {
      print $file->getFilename() . "\n";
  }
}
6 và
foreach (new DirectoryIterator(__DIR__) as $file) {
  if ($file->isFile()) {
      print $file->getFilename() . "\n";
  }
}
7 Ví dụ:

/* 
 * glob() examples
 */

// get the array of full paths
$result = glob( 'path/*' );

// get the array of file names
$result = array_map( function( $item ) {
    return basename( $item );
}, glob( 'path/*' ) );


/* 
 * FilesystemIterator examples
 */

// get the array of file names by using FilesystemIterator and array_map()
$result = array_map( function( $item ) {
    // $item: SplFileInfo object
    return $item->getFilename();
}, iterator_to_array( new FilesystemIterator( 'path' ), false ) );

// get the array of file names by using FilesystemIterator and iterator_apply() filter
$it = new FilesystemIterator( 'path' );
iterator_apply( 
    $it, 
    function( $item, &$result ) {
        // $item: FilesystemIterator object that points to current element
        $result[] = (string) $item;
        // The function must return TRUE in order to continue iterating
        return true;
    }, 
    array( $it, &$result )
);

Đã trả lời ngày 24 tháng 3 năm 2015 lúc 18:43Mar 24, 2015 at 18:43

DanijeldanijelDanijel

12.1k4 Huy hiệu vàng36 Huy hiệu bạc54 Huy hiệu đồng4 gold badges36 silver badges54 bronze badges

Bạn chỉ có thể thử chức năng

foreach (new DirectoryIterator(__DIR__) as $file) {
  if ($file->isFile()) {
      print $file->getFilename() . "\n";
  }
}
8. Nó nhanh và dễ thực hiện

Syntax:

$files = scandir("somePath");

Hàm này trả về một danh sách tệp vào một mảng.

Để xem kết quả, bạn có thể thử

foreach(glob($log_directory.'/*.*') as $file) {
    ...
}
0

Hoặc

foreach(glob($log_directory.'/*.*') as $file) {
    ...
}
1

Hướng dẫn how to get all file names in a folder in php - cách lấy tất cả các tên tệp trong một thư mục trong php

Đã trả lời ngày 29 tháng 3 năm 2016 lúc 7:08Mar 29, 2016 at 7:08

Hướng dẫn how to get all file names in a folder in php - cách lấy tất cả các tên tệp trong một thư mục trong php

Ad Kahnad KahnAd Kahn

5214 Huy hiệu bạc6 Huy hiệu đồng4 silver badges6 bronze badges

Tôi chỉ sử dụng mã này:

foreach(glob($log_directory.'/*.*') as $file) {
    ...
}
2

Hướng dẫn how to get all file names in a folder in php - cách lấy tất cả các tên tệp trong một thư mục trong php

Đã trả lời ngày 24 tháng 6 năm 2016 lúc 10:59Jun 24, 2016 at 10:59

Hướng dẫn how to get all file names in a folder in php - cách lấy tất cả các tên tệp trong một thư mục trong php

Merraismerraismerrais

3732 Huy hiệu bạc8 Huy hiệu Đồng2 silver badges8 bronze badges

Mã đệ quy để khám phá tất cả các tệp có trong một thư mục ('$ path' chứa đường dẫn của thư mục):

foreach(glob($log_directory.'/*.*') as $file) {
    ...
}
3

Hướng dẫn how to get all file names in a folder in php - cách lấy tất cả các tên tệp trong một thư mục trong php

Đã trả lời ngày 12 tháng 3 năm 2017 lúc 20:31Mar 12, 2017 at 20:31

Một cái gì đó tôi đã tạo ra cho điều này:

foreach(glob($log_directory.'/*.*') as $file) {
    ...
}
4

Đã trả lời ngày 11 tháng 2 năm 2021 lúc 16:36Feb 11, 2021 at 16:36

KaloykaloyKaloy

5111 huy hiệu đồng11 bronze badges

0