PHP列表目录并删除..和

sas*_*ori 1 php

我创建了一个脚本,列出当前目录中的目录

<?php
   $dir = getcwd(); 
   if($handle = opendir($dir)){
       while($file = readdir($handle)){
          if(is_dir($file)){
             echo "<a href=\"$file\">$file</a><br />";
            }
       }
?>
Run Code Online (Sandbox Code Playgroud)

但问题是,我看到这个"......"和"." 在目录列表的正上方,当有人点击它时,它们被重定向到目录的一个级别..有人可以告诉我如何删除那些".."和"." ?

Sag*_*agi 8

如果使用opendir/readdir/closedir函数,则必须手动检查:

<?php
if ($handle = opendir($dir)) {
    while ($file = readdir($handle)) {
      if ($file === '.' || $file === '..' || !is_dir($file)) continue;
      echo "<a href=\"$file\">$file</a><br />";
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

如果要使用DirectoryIterator,则有isDot()方法:

<?php
$iterator = new DirectoryIterator($dir);
foreach ($iterator as $fileInfo) {
    if ($fileInfo->isDot() || !$fileInfo->isDir()) continue;
    $file = $fileinfo->getFilename();
    echo "<a href=\"$file\">$file</a><br />";
}
?>
Run Code Online (Sandbox Code Playgroud)

注意:我认为continue可以通过减少缩进级别来简化这种循环.