我正在尝试使用 PHP 递归目录迭代器来查找 php 和 html 文件,以便按日期列出这些文件。使用的代码如下:
$filelist = array();
$iterator = new RecursiveDirectoryIterator( $this->_jrootpath );
foreach(new RecursiveIteratorIterator($iterator) as $file) {
if ( !$file->isDir() ) {
if ( preg_match( "/.(html|htm|php)$/", $file->getFilename() ) ) {
$filelist[$file->getPathname()] = $file->getMTime();
}
}
}
arsort($filelist);
foreach ($filelist as $key => $val) {
$resultoutput .= ' <tr>
<td class="filepath">'.$key.'</td>
<td class="filedate">'.date("d-m-Y H:i:s",$val).'</td>
</tr>';
}
以上工作,但我需要将迭代限制到某些文件夹。该脚本将在父文件夹中开始,我希望其中有一些特定的子文件夹,例如“管理员”、“组件”、“模块”、“插件”和“模板”(换句话说,Joomla 安装的标准文件夹)。我还希望父文件夹中有一些文件,例如“index.php”。这些文件和文件夹应该被迭代(坦率地说,写这个我不确定父文件夹本身是否被我的代码迭代!)。但是,父文件夹可能还包含不应迭代的其他子文件夹。这些可以是子域或插件域的子文件夹,例如命名为“mysub”和“myaddon.com”。除了正常的 Joomla 安装文件夹之外,我想跳过任何文件夹有两个原因。一是我不需要知道其他文件夹中的文件。此外,迭代所有文件夹可能会花费大量时间和资源,以至于我得到 500 个错误页面。
我的问题是如何最好地更改我的代码,以确保正确的文件夹被排除在迭代之外并包含在迭代中?我已经在网络上看到了检查目录名称的迭代器示例,但这对我帮助不够,因为我只需要检查二级文件夹名称(意味着只需要像 parent/secondlevel/noneedtocheck 这样的路径中的最高级别子文件夹/file.php)。