你好,我是一个寻求大师们帮助的门徒。我想使用PHP浏览文件夹,这是我的代码:
foreach (glob ("folderswithsubfoldersandfilesinit") as $path) {
$file = basename($path);
echo '<ul><a href="'.$path.'">'.$file.'</a></ul>';
}
上面的代码将显示指定文件夹中的文件。如果其中的某些项目是子文件夹怎么办?如果我想单击子文件夹并查看其中的文件,我将添加什么代码?我真的需要帮助谢谢。
答案 0 :(得分:1)
使用scandir代替glob
foreach (scandir("folderswithsubfoldersandfilesinit") as $path) {
$file = basename($path);
echo '<ul><a href="'.$path.'">'.$file.'</a></ul>';
}
答案 1 :(得分:0)
使用is_dir
php函数
$dirPath = '/your/start/directory';
if(isset($_GET['dir']) {
$dirPath = $_GET['dir'];
}
foreach (glob ($dirPath) as $path) {
$file = basename($path);
if(is_dir($path)) {
echo "<a href='?dir=$path'>$file</a>";
} else {
echo 'file: ' . $file;
}
}
我认为您可以将echo directory
和echo file
替换为所需的html代码,以处理文件。
ps。我无法为您编写完整的代码,因为我认为用于学习广告的stackoverflow有助于入门开发人员。
答案 2 :(得分:0)
递归函数表示调用自身的函数,这是解析目录之类的树结构的正确方法。
这是一个示例:
const ROOT_DIR = "C:\\mydir";
print_files_of_dir( ROOT_DIR );
function print_files_of_dir( $dir ) {
$files_and_dirs = scandir( $dir );
foreach( $files_and_dirs as $file_or_dir ) {
if ( $file_or_dir === '.' || $file_or_dir === '..' ) {
continue;
}
$full_path = $dir . DIRECTORY_SEPARATOR . $file_or_dir;
if ( is_dir( $full_path ) ) {
print_files_of_dir( $full_path );
}
else {
echo $full_path . '<br>';
}
}
}
您可以看到函数print_files_of_dir
会打印目录的所有文件,并且在找到子目录时会为该子目录调用它自己。
这样整个树都可以解析了。
希望能解决您的问题。
吉安卡洛