PHP 列出目录中的所有文件 - 带有文件链接


PHP list all files in directory - with link to file?

与这篇文章相关:"PHP 列出目录中的所有文件",特别是"Apr 19 '12 at 12:24 " Kiko" 显示的代码

我想知道是否有人可以建议如何确定文件本身的文件夹路径:即

$html .= "<li><span class='file'><a href='???' target='_blank'>". $eachDirectory ."</a></span></li>";

S 我可以在它周围包裹一个 HREF,所以它。 这些函数是递归的,所以我不确定在哪个阶段可以确定文件的路径。 有人有办法做到这一点吗?谢谢!

我已经查看了引用的代码,并对其进行了修改以满足您的需求。仅用此函数替换创建树函数并尝试一下

function createTree($directory,$parent = '')
{
    $html = "<ul>";
    foreach($directory as $keyDirectory => $eachDirectory)
    {
        if(is_array($eachDirectory))
        {
            $html .= "<li class='closed'><span class='folder'>" . $keyDirectory . "</span>";
            $html .= createTree($eachDirectory,$keyDirectory);
            $html .=  "</li>";
        }
        else
        {
            $origin = 'imgs';
            if(trim($parent) !== ''){
                $path = $origin . '/' . $parent . "/" .$eachDirectory;
            }else{
                $path = $origin . '/' . $eachDirectory;
            }
            $html .= "<li><span class='file'><a href='" . $path . "' target='_blank'>". $eachDirectory ."</a></span></li>";
        }
    }
    $html .= "</ul>";
    return $html;
}

您会注意到,我在该函数的参数列表中添加了一个名为 $parent 的新参数项。这用于携带将链接的项目的父文件夹的文件夹名称。然后将文件夹名称附加到$origin变量(这是您使用getFolderTree函数遍历的文件夹的名称,在我的例子中是"imgs"。

有一个 if-else 语句可以检查$parent是否为空,从那里不言自明。如果您想澄清,请询问。

注1:您需要将$origin值替换为根目录下的文件夹名称才能获得完整路径

注2:您需要将正斜杠(/(替换为系统的正斜杠(/(,例如对于* NIX,它是一个反斜杠,因此对于PHP,在字符串内工作时需要使用双反斜杠,但是如果您在Windows上,我的编辑将正常工作