【发布时间】:2013-11-09 02:11:28
【问题描述】:
我正在尝试创建一个 PHP 菜单,该菜单在列表中显示每个目录中的目录和文件,并带有指向这些目录中每个文件的链接(但不是指向目录本身的链接)。目录的数字为“2013”、“2014”等,这些目录中的文件是PDF。
本质上:
--- 2013(未链接)
--------------- 01.pdf(链接)
--------------- 02.pdf(链接)
--------------- 03.pdf(链接)
--- 2014(未链接)
--------------- 04.pdf(链接)
--------------- 05.pdf(链接)
--------------- 06.pdf(链接)
目前,我的代码如下所示:
<?php
function read_dir_content($parent_dir, $depth = 0){
if ($handle = opendir($parent_dir))
{
while (false !== ($file = readdir($handle)))
{
if(in_array($file, array('.', '..'))) continue;
if( is_dir($parent_dir . "/" . $file) ){
$str_result .= "<li>" . read_dir_content($parent_dir . "/" . $file, $depth++) . "</li>";
}
$str_result .= "<li><a href='prs/{$file}'>{$file}</a></li>";
}
closedir($handle);
}
$str_result .= "</ul>";
return $str_result;
}
echo "<ul>".read_dir_content("prs/")."</ul>";
?>
但是,这在处理时会造成一团糟。 (可惜我是新用户,不能发图片,不过如果不是太忌讳的话,我会提供一个偷偷摸摸的链接:http://i.stack.imgur.com/gmIFz.png)
我的问题/请求帮助:
1.为什么顺序颠倒了字母数字,即为什么2013在列表的底部而2014在顶部?
2.如何在保留 PDF 链接的同时删除目录链接?
3. 我很困惑为什么每个目录列表的末尾都有空列表项,以及为什么它们没有逻辑/一致地间隔,即为什么 01、02、03 PDF不从属于 2013 年(参见上面的“本质”间距)?
注意我是编程和 PHP 新手,所以请记住,我明显的错误可能非常简单。如果是,请提前道歉。
edit:大量的好处是去掉文件名末尾的“.pdf”,但这可能是一个完全不同的问题/问题。
【问题讨论】:
-
检查一下:stackoverflow.com/questions/2183486/… 并使用 php.net 上有关 basename()、pathinfo() 和 glob() 的示例。
-
谢谢,Ryan - Tivie 好心地解决了这个额外的问题,但很高兴有这个文档的链接。干杯。
标签: php recursion menu directory