2010-12-04 79 views
1

我試圖列出目錄中只有jpg文件。有超過200個,但使用下面的代碼,只有約100個獲得列表。我已經嘗試了不同的變體來提取文件擴展名,但這是唯一的工作:$sub = substr($file, -3);列出目錄中的文件/提取文件擴展名的問題

任何人都可以告訴我爲什麼所有的文件都沒有顯示出來嗎?

完整的源:

<?php 
    require('index.inc'); 
    $page = new buildpage(); 
    $page->buildHeader(); 

    $currentdir = '/home/tim/Documents/Web/'; 
    $dir = opendir($currentdir); 
    echo "<ol>"; 
    while ($file = readdir($dir)){ 
     $file = readdir($dir); 
     $sub = substr($file, -3); 
     $ext = "jpg"; 
     if (strcasecmp($sub, $ext) == 0) { 
      echo "<li>$file</li>"; 
     } 
    } 
    echo "</ol>"; 
?> 
+0

我建議你在'substring`中使用`strrpos($ file,'。')`(最後一個點的索引),因爲不是所有的擴展名的長度都是3. – Ben 2010-12-04 02:07:12

回答

5

你有

$文件= READDIR($ DIR)

在那裏

兩次。所以它每次閱讀兩次,然後200成爲100.拿出第二個,它應該工作。

+0

非常感謝。對我而言,馬虎錯誤。 – tim 2010-12-04 02:06:19

1

要提取的文件擴展名,我會用

$ext = pathinfo($file, PATHINFO_EXTENSION); 

至於爲什麼只有一些文件顯示,這可能是到jpeg具有不同的充情況下,這種DAS JPG或JPG,或者擴展名的文件相關也許甚至是「jpeg」,這也是有效的。

編輯:當然,你有兩個readdir語句,就像Iznogood指出的那樣。