kostenloser Webspace werbefrei: lima-city


prüfen ob Datei in zwei Verzeichnisse doppelt ?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    snapy

    snapy hat kostenlosen Webspace.

    Hallo

    wie kann ich überprüfen, ob in zwei Unter-Ordnern eine Datei doppelt vorhanden ist,
    also ... ob der gleiche Dateiname in beiden Ordnern vorhanden ist

    und dann eine Liste der "doppelten Dateien" ausgeben ?

    Beispiel:

    ------------------------------------------------- 
    /ordner1/aaaa.txt      |      /ordner2/yyyy.txt
    /ordner1/bbbb.txt      |      /ordner2/xxxx.txt
    /ordner1/cccc.txt      |      /ordner2/aaaa.txt
    /ordner1/zzzz.txt      |      /ordner3/zzzz.txt
    ------------------------------------------------- 
    
    Ergebnis: (in beiden Verzeichnissen vorhanden) 
    
    /aaaa.txt
    /zzzz.txt


    wie kann ich sowas mit PHP machen ?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. <?php
    $handle=opendir ("pfad1");
    $handle2=opendir("pfad2");
    $a=0;
    while ($datei = readdir ($handle)) {
     $ver1[$a]=$datei;
    $a++;
    }
    $a=0;
    while ($datei = readdir ($handle2)) {
     $ver2[$a]=$datei;
    $a++;
    }
    $a=0;
    foreach($ver1 as $index)
    {
        foreach($vor2 as $index2)
        {
           if($index==$index2)
           { 
               echo 'es gibt eine Übereinstimmung';
               $a=1; 
               break;
           }
        }
    if($a==1)
    {
        break;
    }
    
    }
    closedir($handle);
    ?>

    ist aber ungetetet
  4. Autor dieses Themas

    snapy

    snapy hat kostenlosen Webspace.

    ahhhh ... danke

    jetzt weiss ich auch, warum es mit glob() nicht funktioniert hat,
    denn glob() hat im Array auch den Pfad (das Verzeichnis)
    und dann sind die "Strings" ja auch immer unterschiedlich

    habe mal eine Funktion draus gebastelt, ist bestimmt noch verbesserungsfähig

    // ----------------------------------------------------- 
    
    function dir_compare($dir1, $dir2) { 
    
    	$handle1 = opendir($dir1);
    	$comp1 = array(); 
    	while ($datei = readdir($handle1)) { 
    	 if ($datei != '.' && $datei != '..') { $comp1[]=$datei; } 
    	}
    	closedir($handle1);
    	
    	$handle2 = opendir($dir2);
    	$comp2 = array(); 
    	while ($datei = readdir($handle2)) { 
    	 if ($datei != '.' && $datei != '..') { $comp2[]=$datei; } 
    	}
    	closedir($handle2);
    	
    	
    	$result = array_intersect($comp1, $comp2);
    	
    	return $result; 
    	
    }
    
    // -----------------------------------------------------


    Aufruf:
    $doppelt = dir_compare('pfad1', 'pfad2');


    Ergebnis: Array mit doppelt vorkommenden Dateinamen

    zum Prüfen, ob "doppelt" nehme ich einfach array_intersect()
    dann spare ich mir den Vergleich mit den foreach Schleifen
    und habe das Ergebnis gleich als Array vorliegen.

    hier auch noch eine Version mit glob()


    // -----------------------------------------------------
     
    function dir_compare2($dir1, $dir2) {
     
        $dir1 = rtrim($dir1,'/');
        $xvz1= glob($dir1.'/*.*');
        $comp1 = array();
        foreach($xvz1 as $datei) {
         if ($datei != '.' && $datei != '..') { $comp1[] = str_replace($dir1.'/','',$datei); }
        }
     
        $dir2 = rtrim($dir2,'/');
        $xvz2 = glob($dir2.'/*.*');
        $comp2 = array();
        foreach($xvz2 as $datei) {
         if ($datei != '.' && $datei != '..') { $comp2[] = str_replace($dir2.'/','',$datei); }
        }
         
         
        $result = array_intersect($comp1, $comp2);
         
        return $result;
         
    }
     
    // -----------------------------------------------------


    ist die Frage was Ressourcen-schonender ist, mit readdir() oder mit glob()
    ... oder ganz anders?


    Beitrag zuletzt geändert: 10.11.2013 12:36:30 von snapy
  5. Wenn dir geschwindigkeit wirklich wichtig ist, solltest du vielleicht gucken, ob du die Datein nicht in einer Datenbank chachen solltest.
  6. 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!