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>';
}
上記は機能しますが、反復を特定のフォルダーに制限する必要があります。このスクリプトは、「administrator」、「components」、「modules」、「plugins」、「templates」などの特定のサブフォルダー(つまり、Joomlaインストールの標準フォルダー)が必要な親フォルダーで開始されます。また、「index.php」のように、親フォルダーにいくつかのファイルがあることを期待しています。これらのファイルとフォルダーは反復する必要があります(率直に言って、これを書くと、親フォルダー自体が私のコードによって反復されているかどうかはわかりません!)。ただし、親フォルダーに、反復してはならない他のサブフォルダーが含まれている可能性があります。これらは、「mysub」や「myaddon.com」などの名前のサブドメインまたはアドオンドメインのサブフォルダーである可能性があります。通常のJoomlaインストールフォルダ以外のフォルダをスキップしたい理由は2つあります。1つは、他のフォルダー内のファイルについて知る必要がないことです。さらに、すべてのフォルダーを繰り返すと、500のエラーページが表示されるほど多くの時間とリソースがかかる可能性があります。
私の質問は、適切なフォルダーがイテレーションから除外され、イテレーションに含まれるようにするために、コードをどのように変更するのが最善かということです。Webでディレクトリの名前をチェックするイテレータの例を見てきましたが、2番目のレベルのフォルダ名(parent / secondlevel / noneedtocheckなどのパスの最上位のサブフォルダのみを意味する)をチェックするだけでよいため、十分に役立ちません。 /file.php)。