如何使用PHP readdir读取根级别以外的目录中的文件并进行链接?

时间:2011-09-01 20:08:02

标签: php

我正在使用php include(侧面导航菜单 - php脚本将在哪里),它位于我的网络服务器的根级别。

我想使用php readdir或scandir列出我服务器(/ report_1)上不同文件夹的内容,其中包含指向那些文件的链接,不包括html,htm和xslt扩展名。 (或者只是包含php扩展名)

目前我使用的readdir只读取它所在的当前目录的内容,并返回不包括某些文件类型的链接。(参见下面的代码)

我最终希望在include中包含一个php文件,列出并链接到“include”根级别之外的文件。任何帮助将非常感激。

<?php

// These files will be ignored
$excludedFiles = array (
'excludeMe.file',
'excludeMeAs.well'
);

// These file extensions will be ignored
$excludedExtensions = array (
'html',
'htm',
'php'
);

// Make sure we ignore . and ..
$excludedFiles = array_merge($excludedFiles,array('.','..')); 

// Convert to lower case so we are not case-sensitive
 for ($i = 0; isset($excludedFiles[$i]); $i++) $excludedFiles[$i] =         
strtolower(ltrim($excludedFiles[$i],'.'));
 for ($i = 0; isset($excludedExtensions[$i]); $i++) $excludedExtensions[$i] =     

strtolower($excludedExtensions[$i]);

// Loop through directory
$count = 0;
if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle))) {
  $extn = explode('.',$file);
  $extn = array_pop($extn);
  // Only echo links for files that don't match our rules
  if (!in_array(strtolower($file),$excludedFiles) &&    

!in_array(strtolower($extn),$excludedExtensions)) {
    $count++;
    print("<a href=\"".$file."\">".$file."</a><br />\n");
  }
}
echo '<br /><br /><a href="..">Return</a>';
closedir($handle);
}

?>

1 个答案:

答案 0 :(得分:1)

  • 使目录循环成为一个函数。
  • 使用is_dir
  • 检查当前文件是否为目录
  • 如果是,请通过相同的功能重新运行该目录。
  • 否则,请按原样打印文件名。

您可能需要考虑在链接中使用绝对路径。

希望这有帮助。