若要用 PHP 取得指定資料夾(包括子資料夾)中所有副檔名為 .avi 或 .pdf 的檔案,並將其轉為網頁上的相對連結,可採用遞迴方式遍歷目錄樹。
function get_filetree($path, $exts) {
$tree = array();
foreach ($exts as $ext) {
$temp = glob($path . '/*' . $ext);
if ($temp) {
$tree = array_merge($tree, $temp);
}
}
foreach (glob($path . '/*', GLOB_ONLYDIR) as $dir) {
$tree = array_merge($tree, get_filetree($dir, $exts));
}
return $tree;
}
$exts = array('.avi', '.pdf');
$list = get_filetree('E:/avi', $exts);
foreach ($list as $item) {
$name = basename($item);
echo '<a href="' . $item . '" target="_blank">' . $name . '</a><br>';
}
若需處理更深層的目錄結構,建議搭配 RecursiveDirectoryIterator 與 RecursiveIteratorIterator,效能與穩定性會更好。