Ben bugüne kadar bu listelemek için php ve html dosyaları bulmak için PHP recursive dizin yineleyici kullanmaya çalışıyorum. Aşağıdaki gibi kullanılan kod:
$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>';
}
Yukarıdaki eserler, ama ben belirli klasörlere yineleme kısıtlamak gerekir. Bu script beklediğim bir üst klasöre başlayacak (diğer bir deyişle, bir Joomla kurulum standart klasörleri) 'yönetici', 'bileşenleri', 'modüller', 'eklentileri' ve 'şablonlar' gibi bazı özel alt klasörler. Ben de 'index.php' gibi, üst klasörde birkaç dosya bekliyoruz. Bu dosya ve klasörleri (ana klasör kendisi benim kod tarafından iterated eğer ben emin değilim bu yazı, açıkçası!) Iterated edilmelidir. Ancak, ana klasör de iterated olmamalı, diğer alt klasörler içeren mümkündür. Bu alt veya 'MySub' ve 'myaddon.com' örneğin adını addon etki için alt klasörler olabilir. Ben normal bir Joomla kurulum klasörler dışında herhangi bir klasör atlamak isteyen iki nedeni vardır. Bir diğer klasörlerdeki dosyaları hakkında bilmeniz gereken kalmamasıdır. Ayrıca, tüm klasörleri yineleme 500 hata sayfaları olsun o kadar çok zaman ve kaynak alabilir.
Benim soru en doğru klasörler dışında ve yineleme dahil olduğundan emin olmak için benim kodunu değiştirmek istiyorsunuz nasıl? Ben bir dizinin adı denetleyerek web etrafında yineleyici örneklerini gördük, ama ben sadece ebeveyn / secondlevel / noneedtocheck gibi bir yol sadece en üst düzey alt klasör anlam ikinci düzey klasör adlarını (kontrol etmek gerekir, çünkü bu, beni yeterince yardımcı olmuyor / file.php).