2009-04-06 45 views
34

Tôi muốn đọc danh sách tên các tệp trong một thư mục trong trang web bằng cách sử dụng php. là có bất kỳ kịch bản đơn giản để đạt được nó?Cách đọc danh sách tệp từ thư mục bằng PHP?

+0

Có bạn có thể đọc nó bằng cách sử dụng php, xin vui lòng đọc và sử dụng lớp học này Tôi chắc chắn Nó sẽ giúp rất nhiều. http://www.devbaba.com/2015/06/04/how-to-fetch-and-list-the-files-and-sub-directories-in-specific-directory/ – naCheex

Trả lời

96

Cách đơn giản nhất và thú vị nhất (IMO) là glob

foreach (glob("*.*") as $filename) { 
    echo $filename."<br />"; 
} 

Nhưng cách tiêu chuẩn là sử dụng directory functions.

if (is_dir($dir)) { 
    if ($dh = opendir($dir)) { 
     while (($file = readdir($dh)) !== false) { 
      echo "filename: .".$file."<br />"; 
     } 
     closedir($dh); 
    } 
} 

cũng là SPL DirectoryIterator methods Có. Nếu bạn quan tâm

+0

Cảm ơn Olafur đã giúp rất nhiều .. –

+0

Tôi không khuyên bạn nên Glob - bao giờ hết! Nó cực kỳ chậm, đặc biệt là với nhiều tập tin. Tôi sẽ sử dụng một trong những: FilesystemIterator, DirectoryIterator, RecursiveDirectoryIterator. – JREAM

2

Nếu bạn có vấn đề với việc tiếp cận với các đường dẫn, có lẽ bạn cần phải đặt này:

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

// Open the folder 
$dir_handle = @opendir($root . $path) or die("Unable to open $path"); 
2

Có một glob. Trong trang web này có bài viết tốt như thế nào để liệt kê các file theo cách rất đơn giản:

How to read a list of files from a folder using PHP

+8

Lưu ý rằng các câu trả lời chỉ có liên kết không được khuyến khích, các câu trả lời SO phải là điểm kết thúc của một tìm kiếm cho một giải pháp (so với một điểm dừng khác của các tham chiếu, có xu hướng bị cũ theo thời gian). Vui lòng xem xét thêm bản tóm tắt độc lập tại đây, giữ liên kết dưới dạng tham chiếu. – kleopatra

11

Đây là những gì Tôi thích làm:

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

foreach($files as $file){ 
    echo $file; 
} 
+0

Cần một sửa lỗi nhỏ: chức năng ($ file) sử dụng ($ path) {return! Is_dir ($ path. '/'. $ File); – Borgboy

1

Kiểm tra nhiều thư mục:

Thư mục_1 và thư mục_2 là tên thư mục, từ đó chúng tôi phải chọn tệp.

Định dạng $ là định dạng bắt buộc.

<?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>"; 
    } 
} 
?> 
-2
<?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/là nghĩa vào thư mục hình ảnh của bạn. Biến $ i = 0 đang tìm kiếm . tệp hình ảnh và sẽ bắt đầu tên tệp đầu tiên.

+1

Vui lòng giải thích cách đoạn mã của bạn là câu trả lời cho câu hỏi của OP. – YSC

0

Bạn có thể sử dụng chức năng thư mục tiêu chuẩn

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

    echo $file; 
} 
closedir($dir); 
0
<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> 
+1

Trong khi mã này có thể trả lời câu hỏi, cung cấp ngữ cảnh bổ sung liên quan đến * cách * và/hoặc * lý do * giải quyết vấn đề sẽ cải thiện giá trị lâu dài của câu trả lời. – radoh

Các vấn đề liên quan