kostenloser Webspace werbefrei: lima-city


neue Verzeichnis-Struktur erstellen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    spiele2u

    spiele2u hat kostenlosen Webspace.

    Hallo

    ich habe ein Script, welches mir eine Verzeichnis-Struktur erstellen soll.
    und mein Problem sind dabei leere Verzeichnisse

    Daten-Struktur ist so, dass ich ein 2D Array habe mit i 2ter Ebene keys: filename und content
    filename gibt den Pfad und Dateiname an, in content ist der jeweilige Datei-Inhalt
    es geht mir jetzt um die Werte in filename (Ordnerstruktur und Dateiname)

    Daten-BSP: (ohne content)

    array ( 
    [0] => array (
         [filename] = > /datei.php
         [content] => .... 
              )
    [1] => array (
         [filename] = > /ordner1/datei.php
         [content] => .... 
              )
    [2] => array (
         [filename] = > /ordner2/ordner3/datei.php
         [content] => .... 
              )
    [3] => array (
         [filename] = > /ordner2/ordner3/ordner4/datei.php
         [content] => .... 
              )
    
    ... usw.
    
    )



    wie kann ich jetzt die jeweilige Ordner-Struktur anlegen
    um dann die Datei in den "richtigen" Ordner zu schreiben ?

    bisher mache ich es so
    $zielpfad = "neu/";  // ---- alles ablegen im Ordner $zielpfad --- 
    
    foreach($data as $item) { 
    // ---- Ordner finden ---- 
       $datei = strrchr($item['filename'], "/");
       $dpfad = str_replace($datei, "", $item['filename']); 
    
    // ---- führende Slashes entfernen ---- 
       $datei = trim($datei, "/");
       $dpfad = trim($dpfad, "/");
    
    // ---- End-Slashes an Pfad ---- 
       if (!empty($dpfad)) { $dpfad = $dpfad."/"; } 
    
    // ---- Neuen Pfad anlegen ---- 
       if (!empty($dpfad) && !is_dir($zielpfad.$dpfad)) { 
          mkdir($zielpfad.$dpfad, 0755); 
          echo "<br />Neues Verzeichnis: <strong>".$dpfad."</strong>\r\n"; 
       } 
    
    // ---- Neue Datei in Pfad anlegen ---- 
       $handle = fopen($zielpfad.$dpfad.$datei,"w", 0755);
       fwrite($handle,$item['content']); 
       echo "<br />Neue Datei: <strong>".$datei."</strong>\r\n"; 
       fclose($handle);
    
    
    }


    das funktioniert aber nicht mit Ordnern ohne Datei,
    also nicht wenn ein Ordner "nur" Ordner enthält !?!

    also ich kann mit mkdir() nicht direkt ordner2/ordner3/ anlegen
    sondern ich denke ich muss erst ordner2/ und dann ordner3/ anlegen

    ok, wohl einzelne Ordner zählen und nacheinander anlegen
    ... aber wie am besten ?



    Beitrag zuletzt geändert: 6.10.2011 11:02:10 von spiele2u
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Mach's mit explode.

    pseudocode
    if  ($dateiArray[filename] enthält "/")
    {
       $ordnerPosition="";
        $ordnerArray  = explode("/",$dateiArray[filename])
        for(var i=0;i<count($ordnerArray)-1;i++)
            {
               //Ordner $ordnerArray[i]  in $zielpfad.$ordnerPosition anlegen
              $ordnerPosition.=$ordnerPosition."/"; //position merken
             }
         //letzter wert im Array ist der Dateiname (deswegen i<count($ordnerArray)-1 in der for-schleife)
         $Dateiname=ordnerArray[count($ordnerArray)-1]
    }else
    {
         $Dateiname=$dateiArray[filename];
    }
    //Datei $Dateiname in $zielpfad.$ordnerPosition anlegen




    Beitrag zuletzt geändert: 6.10.2011 9:34:33 von simuliertes
  4. Autor dieses Themas

    spiele2u

    spiele2u hat kostenlosen Webspace.

    simuliertes schrieb:
    Mach's mit explode.


    jo, Danke, jetzt hab ich es (glaub ich) ganz gut gelöst

    // ------------------------------------- 
    
    foreach($data as $filedata) { 
    
    	echo "<br /><u>".$filedata['filename']."</u>\r\n"; 
    	
    	$datei = strrchr($filedata['filename'], "/");
    	$dpfad = str_replace($datei, "", $filedata['filename']); 
    	
    	$datei = trim($datei, "/");
    	$dpfad = trim($dpfad, "/");
    	
    	if (empty($datei)) { 
    	$datei = $dpfad; 
    	$dpfad = ''; 
    	} 
    	
    		if ( strpos($dpfad, "/") ) { 
    		
    		$subpfad = explode("/",$dpfad); 
    		$sanz = count($subpfad); 
    		
    		$gopfad = array(); 
    		
    		for ($i=0; $i<$sanz; $i++) { 
    			
    			if ($i == 0) { 
    				$tmppfad = $subpfad[$i];  // ---- erste Ebene ---- 
    				$gopfad[$i] = $tmppfad; 
    			}
    			else {
    				$tmppfad = $tmppfad.'/'.$subpfad[$i]; 
    				$gopfad[$i] = $tmppfad; 
    			}
    			
    			if (!is_dir($zielpfad.$gopfad[$i])) { 
    				mkdir($zielpfad.$gopfad[$i], 0755); 
    				echo "<br />Neues Verzeichnis: <strong>".$gopfad[$i]."</strong>\r\n"; 
    			} 
    			
    			
    		}
    		
    		} 
    		else { 
    			if (!is_dir($zielpfad.$dpfad)) { 
    				mkdir($zielpfad.$dpfad, 0755); 
    				echo "<br />Neues Verzeichnis: <strong>".$dpfad."</strong>\r\n"; 
    			} 
    		}
    	
    	
    	if (!empty($datei)) { 
    		if (!file_exists($zielpfad.$dpfad.'/'.$datei)) { 
    			$handle = fopen($zielpfad.$dpfad.'/'.$datei,"w", 0755);
    			fwrite($handle,$filedata['content']);
    			echo "<br />Neue Datei: ".$dpfad."/<strong>".$datei."</strong>\r\n"; 
    			fclose($handle);
    		}
    	} 
    	
    	echo "<br />&nbsp;\r\n";
    	echo "<hr />\r\n";
    
    } 
    
    
    // -------------------------------------


    vielleicht kann das ja noch jemand anderes gebrauchen
    ist z.B. ganz nützlich um Zip file Content zu schreiben
    :)



    Beitrag zuletzt geändert: 6.10.2011 11:03:47 von spiele2u
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!