SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 19.02.2009, 01:21:18
Benutzerbild von Nachthertz
Nachthertz Nachthertz ist offline
Anfänger
 
Registriert seit: Feb 2009
Alter: 36
Beiträge: 1
Ordner rekursiv auslesen und Inhalt tabellarisch ausgeben

Hello World,

ich werkle an einer rekursiven Funktion, die einen übergebenen Pfad einliest und mir die Musikdateien, Bilder und Texte auflistet.

Eine fertige Funktion habe ich so angepasst, dass entsprechende Dateitypen in ihr eigenes Array geschrieben werden, aber mein Problem ist die Ausgabe. :(

Die jetzige Funktion gibt mir eine Baumstruktur aus - ich möchte aber eine Tabelle haben, die mir von links nach rechts Den Ordnernamen, eventuelle Unterordner, Musik-, Bild- und Textdateien ausgibt. Das i-Tüpfelchen wäre noch die Anzahl der Unterordner.

Ich habe folgende Funktion:
Code:
if(!empty($_POST['pfad'])){
		// Übermittelten Pfad checken und korrigieren
		$pfad = $_POST['pfad'];
		$pfad = str_replace('\\','/',$pfad);
		
		if(substr($pfad, -1, 1)=="/"){
			$pfad = substr($pfad, 0, -1);
		}
		
		if(preg_match("#^[((a-z){1}):]+[/(a-zäöüß 0-9_.,;+\-\[\]\{\}\(\)&%!~)]*$#si", $pfad)){
			$hinweis = 0;
		}
		else{
			$hinweis = "<span class=\"hinweis\">Ung&uuml;ltiger Pfad.</span><br />\n";
		}
		
		// Dateien einlesen
		function ordnerinhalt($folder){
			$dir_filter = array('.', '..');
			$sound_files = array();
			$pic_files = array();
			$txt_files = array();
			$sound_ext = array('mp3', 'ogg', 'wav', 'flac', 'acc', 'ape', 'wma');
			$pic_ext = array('jpg', 'jpeg', 'png', 'gif', 'bmp');
			$txt_ext = array('txt', 'doc', 'odt', 'rtf', 'nfo');
			$folderArray = array();
			$fileArray = array();
			$content = "";
		 
			if(isset($folder)){
				foreach(scandir($folder) as $file){
					if(!in_array($file[0], $dir_filter)){ // Versteckte Dateien nicht anzeigen
						if(is_dir($folder.'/'.$file)){
							$folderArray[] = $file;
						}else{
							$fileArray[] = $file;
						}
					}
				}
				
				foreach($fileArray as $key => $value){
					$file_info = pathinfo($value);
					$extension = strtolower($file_info['extension']);
					
					if(in_array($extension, $sound_ext)){
						$sound_files[] = $value;
					}
					elseif(in_array($extension, $pic_ext)){
						$pic_files[] = $value;
					}
					elseif(in_array($extension, $txt_ext)){
						$txt_files[] = $value;
					}
				}
			}
		 
			// Erst die Ordner ausgeben
			if(isset($folderArray)){
				foreach($folderArray as $row){
					$content .= '<tr><td style="font-size:0.5em;"><b>'.$row.'</b></td>';
					$content .= '<td style="width:350px;font-size:0.5em;">'; //Unterordner nach Rechts einrücken
					$content .= ordnerinhalt($folder.'/'.$row); // rekursive Funktion
					$content .= '</td>';
				}
			}
		 
			// ...dann die Dateien ausgeben
			if(isset($sound_files)){
				foreach($sound_files as $row){
					$content .= '<td style="font-size:0.5em;"><a href="'.$folder.'/'.$row.'">'.$row.'</a></td>'; //Dateien verlinken
				}
			}
			if(isset($pic_files)) {
				foreach($pic_files as $row){
					$content .= '<td style="font-size:0.5em;"><a href="'.$folder.'/'.$row.'">'.$row.'</a></td>'; //Dateien verlinken
				}
			}
			if(isset($txt_files)) {
				foreach($txt_files as $row){
					$content .= '<td style="font-size:0.5em;"><a href="'.$folder.'/'.$row.'">'.$row.'</a></td>'; //Dateien verlinken
				}
			}
			
			$content .= "</tr>";
			
			// Rekursion ende
			return $content;
		}
		
		$quelle = str_replace('<','&lt;',$pfad);
		$quelle = str_replace('>','&gt;',$quelle);
	}else{
		$quelle = "Kein Pfad.";
	}
Und hier der Aufruf:
Code:
if(isset($pfad)){
				echo "<span style=\"display:block; margin-bottom:10px;\">Pfad: ".$quelle."</span>\n";
				if($hinweis==true){echo $hinweis;}
				elseif($hinweis==false){
					echo "<table cellspacing=\"0\" cellpadding=\"0\">\n";
					echo ordnerinhalt($pfad);
					echo "\n</table>\n";
				}
			}
Aber diese Formatierung ist alles andere als ansehlich :/
Gibt es eine Möglichkeit, die rekursive Funktion so auszuführen, dass ich die eingelesenen Werte besser handhaben/aufrufen kann?

Danke im voraus,
Nachthertz

PS: Ich arbeite lokal.
Mit Zitat antworten
  #2  
Alt 19.02.2009, 01:40:37
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: Ordner rekursiv auslesen und Inhalt tabellarisch ausgeben

Hiermit kannst du erstmal die Rekursion übersichtlicher gestalten und hast alle Dateien und Ordner in einer Foreach zur verfühgung.

PHP-Code:
$such_in './dein_ordner';
$dir =  new RecursiveIteratorIterator(
              new 
RecursiveDirectoryIterator($such_in));

foreach(
$dir as $datei)
    echo 
"Tiefe: ".$dir->getDepth()." Datei: $datei <br>"
Ansonsten, verstehe ich keinen Piep davon, wie es denn hinterher aussehen soll.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Übergeordneter Ordner auslesen und als Link wieder geben Grazioli PHP Grundlagen 0 08.05.2008 19:53:52
Textdatei auslesen und Inhalt in mehrdimensionales Array schreiben wolfram523 PHP Grundlagen 3 25.03.2008 14:20:58
Textdatei auslesen und Inhalt verwenden d4rkm3n PHP Grundlagen 14 21.06.2006 18:27:59
Bilder und Ordner auslesen rabbi PHP Grundlagen 2 09.09.2005 08:58:55
Alle Dateien in einem Ordner auslesen?! Phil PHP Grundlagen 3 01.10.2003 20:53:06


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:58:35 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt