Um nicht nur den Inhalt des aktuellen Verzeichnisses, sondern auch den Inhalt aller Unterverzeichnisse ausgeben zu können, muss man eine rekursive Funktion verwenden. Diese ruft sich bei Bedarf selbst auf. Im nachfolgenden Beispiel durchläuft die Funktion show_dir jeweils das aktuelle Verzeichnis. Wird Datei gefunden, wird der Dateiname ausgegeben. Findet die Funktion ein Verzeichnis, dann wird der Verzeichnisname fett ausgegeben und die Funktion ruft sich mit dem Unterverzeichnis als Parameter selbst wieder auf.
<?php function show_dir( $dir, $pos=2 ) { if ( $pos == 2 ) { echo "<hr /><pre>"; } $handle = @opendir( $dir ); if ( is_resource( $handle ) ) { while ( ( $file = readdir( $handle ) ) !== false ) { if ( preg_match( '~^\.{1,2}$~', $file ) ) { continue; } if ( is_dir( $dir.$file ) ) { printf( "% ".$pos."s <b>%s</b>\n", '|-', $file ); show_dir( $dir.$file.'/', $pos + 3 ); } else { printf( "% ".$pos."s %s\n", '|-', $file ); } } closedir($handle); } if ( $pos == 2 ) { echo "</pre><hr />"; } } show_dir( 'special/' ); ?>






