PHP文件管理器

时间:2013-09-21 22:15:13

标签: php filesystems file-manager ext4 scandir

我最近开始为我的服务器开发一个PHP文件管理器,因为我觉得使用它非常方便,并允许我提高我的PHP技能。无论如何,我有几个问题希望可以回答......

  • 当我列出我的导演时,总会有几个“点”。例如:。,..,Folder_1,Folder_2等...如何从目录列表中删除这些“Dots”?
  • 当我列出我的directorys时,我当前的方法没有问题列出带下划线的文件夹,或者名称中没有空格的文件夹。但是,它无法处理名称中包含空格的文件夹。有没有办法让我的文件管理器正确识别和处理名称中的空格?

这是我目前的代码......

<?php
global $dir_path;
if (isset($_GET["directory"])) {
    $dir_path = $_GET["directory"];
    //echo $dir_path;
}
else {
    $dir_path = $_SERVER["DOCUMENT_ROOT"]."/";
}

$directories = scandir($dir_path);
foreach($directories as $entry) {
    if(is_dir($dir_path . "/" . $entry )) {
        echo "<a href=?directory=" . $dir_path . "" . $entry . "/" . "><li>" . $entry . "</li></a>";
    }
    else {}
}

&GT;

非常感谢任何帮助, 布兰登

P.S。 “Dots”是否与我的服务器的ext4文件系统有关?这与我的问题没有多大关系,我只是有点好奇。

1 个答案:

答案 0 :(得分:1)

如果你只想要一个简单的版本:

foreach($directories as $entry) {
    if (is_dir($dir_path . "/" . $entry) && !in_array($entry, array('.','..'))) {
        echo "<a href=?directory=" . $dir_path . "" . $entry . "/" . "><li>" . $entry . "</li></a>";
    }
    else {}
}

这将检查. / ..,例如当前目录和后方目录。关于空间听起来很奇怪。它是不起作用的链接还是scandir?如果是链接,请用%20替换空格,例如

$href="?directory=" . $dir_path . "" . str_replace(' ','%20',$entry) . "/";
echo "<a href='".$href.'"><li>' . $entry . '</li></a>';

我更有可能认为href周围缺少引号"",例如

echo '<a href="?directory="' . $dir_path . $entry . '/' . '"><li>' . $entry . '</li></a>';

代替。当您不添加quoutes时,浏览器会将带有空格的链接(例如“test 123”)解释为href=test,因为没有任何内容可以封装整个链接。它应该是href="test 123"