【问题标题】:List all folders in directory (PHP) [duplicate]列出目录中的所有文件夹(PHP)[重复]
【发布时间】:2018-06-08 11:46:15
【问题描述】:

如何让我的代码只显示文件夹的链接而不显示目录中的文件?

$d = dir(".");
echo "<ul>";
while(false !== ($entry = $d->read())) {
    echo "<li><a href='{$entry}'>{$entry}</a></li>";
}
echo "</ul>";
$d->close();

【问题讨论】:

标签: php directory scandir


【解决方案1】:
$d = dir(".");

echo "<ul>";

while (false !== ($entry = $d->read()))
{
    if (is_dir($entry) && ($entry != '.') && ($entry != '..'))
        echo "<li><a href='{$entry}'>{$entry}</a></li>";
}

echo "</ul>";

$d->close();

【讨论】:

  • 谢谢,只输出文件夹,没有点!
【解决方案2】:

您应该能够通过调用is_dir 来包装您当前的代码:

while(false !== ($entry = $d->read())) {
    if (is_dir($entry)) {
        echo "<li><a href='{$entry}'>{$entry}</a></li>";
    }
}

如果要删除“点”目录(...),请使用以下命令:

if (is_dir($entry) && !in_array($entry, ['.', '..'])) {
...

【讨论】:

  • 谢谢,这就像一个魅力!这个解决方案的唯一问题是我在文件夹下面得到了这些点,那是什么意思?
  • @Unknown 点是另一个“目录”,实际上它是您所在目录的父目录。
  • 我明白了!有没有办法从代码中删除它,还是我必须使用 css 来删除它?
  • 顺便说一句,我喜欢这个平台。如此快速的答案,简直就是魔法!
  • 我添加了一种去除点的方法
【解决方案3】:

只需检查 $entry 是否为目录:

$d = dir(".");
echo "<ul>";
while(false !== ($entry = $d->read())) {
if(is_dir($entry))
    echo "<li><a href='{$entry}'>{$entry}</a></li>";
}
echo "</ul>";
$d->close();

【讨论】:

  • OBS!正是这段代码用点开箱即用!
猜你喜欢
  • 2011-04-19
  • 2013-03-24
  • 1970-01-01
  • 2011-10-30
  • 1970-01-01
  • 2017-05-01
相关资源
最近更新 更多