首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 使用 DirectoryIterator 列出目錄檔案並輸出下拉選單

     編輯:PHP 綜合知識

DirectoryIterator 實作 Iterator 介面,可直接 foreach 遍歷目錄,物件提供豐富檔案資訊方法。

基本用法:輸出 <select> 選單

<?php
echo "<select name='file'>\n";
foreach (new DirectoryIterator('c:\wamp\www') as $file) {
    echo '<option>' . htmlspecialchars((string)$file) . "</option>\n";
}
echo '</select>';
?>

DirectoryIterator 常用方法

方法回傳說明
getFilename()string檔名 (不含路徑)
getPathname()string完整路徑
isFile()bool是否為檔案
isDir()bool是否為目錄
isDot()bool是否為 . 或 ..
getSize()int檔案大小 (位元組)
getMTime()int修改時間 (Unix timestamp)
getPerms()int權限位元遮罩
__toString()string同 getFilename()

進階:只列出檔案、排除隱藏檔、按大小排序

$files = [];
foreach (new DirectoryIterator('/var/www') as $file) {
    if ($file->isFile() && !$file->isDot() && $file->getFilename()[0] !== '.') {
        $files[] = $file;
    }
}
usort($files, fn($a, $b) => $b->getSize() <=> $a->getSize()); // 大到小

echo "<select>";
foreach ($files as $f) {
    echo "<option value='{$f->getPathname()}'>{$f->getFilename()} ({$f->getSize()} bytes)</option>";
}
echo "</select>";

現代替代:RecursiveDirectoryIterator + GlobIterator

  • 遞迴掃描:RecursiveDirectoryIterator
  • 模式比對:GlobIterator (支援 *.php)
  • 高效能:FilesystemIterator (預設跳過 . 與 ..)

DirectoryIterator 是 PHP 目錄掃描的標準物件導向介面,功能豐富且易用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved