与此帖相关:"PHP list all files in directory" ,特别是“12月19日12:24”Kiko“所显示的代码
我想知道是否有人可以建议如何确定文件本身的文件夹路径: 即
$html .= "<li><span class='file'><a href='???' target='_blank'>". $eachDirectory ."</a></span></li>";
我可以在它周围包裹一个HREF。函数是递归的,所以我不确定在哪个阶段我可以确定文件的路径。有人有办法做到这一点吗?谢谢!
答案 0 :(得分:1)
我查看了引用的代码,并对其进行了修改以满足您的需求。用此替换 createTree 功能并尝试
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:您需要将forwardslash(/)替换为系统的格式,例如对于* NIX,它是一个反斜杠,所以对于PHP,你需要在字符串内部使用双反斜杠但是如果你在Windows上我的编辑工作正常