我正在尝试使用PHP在父目录级别创建目录的动态菜单。我可以使用以下代码获取子目录:
<?php
if ($handle = opendir('.'))
{
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{
if(is_dir($file))
{
echo '<a href="./' . $file . '">' . $file . '</a><br/>';
}
}
}
closedir($handle);
}
?>
当我将opendir改为('..')或(''')时似乎没有回来。我想做这样的事情:
/
|-A
| |-1
|-B
| |-1
| |-2
| |-3
| |-a
| |-b
|-C
如果我在/ B / 2页面中,那么php输出将显示父目录级别列表将具有到A,B和C的链接,而不是像'..'那样的符号。如果我在/ A / 1中,相同的代码将显示相同的父级目录。如果我在/ B / 3 / a中,代码会列出1,2和3.这可能吗?如果是这样,我将如何修改代码来实现这一目标?
答案 0 :(得分:0)
像is_dir()
这样的函数的filename参数是相对于进程的当前目录解释的,该目录与您提供给opendir()
的目录不同。您需要在目录前添加:
if (is_dir("../$file")) {
答案 1 :(得分:0)
你需要像这样链接它:
<a href="../A/1">A</a>
<a href="../B/1">A</a>
<a href="../C/1">A</a>
答案 2 :(得分:0)
事实证明,这是一个测试问题,看看我是否在目录上有一行。请注意,序列以
开头if (is_dir('../'))
{
}
答案是这样的。
<?php
if (is_dir('../'))
{
if ($dirhandle = opendir($dir))
{
while (($directory = readdir($dirhandle)) !== false)
{
if ($directory != "." &&
$directory != ".." &&
$directory != ".DS_Store" &&
$directory != ".metadata"
)
{
echo '<a href="../' . $directory . '">'. $directory . '</a><br>' . "\n";
}
}
closedir($dh);
}
}
?>
然后,您可以修改不要列出的内容列表,例如的index.php。