Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Listare tutta una directory

    Codice PHP:
    <?php
    function send($x)
    {
        global 
    $unfile;
        global 
    $undir;
        
    $a $x;    
        
    $localedir opendir($a);
        
    $localedir2 opendir($a);
        while(
    readdir($localedir))
        {    
            
    //Riapre la cartella
            
    $fdir readdir($localedir2);    
            
    //Verifica che non sia una cartella di stato
            
    if($fdir != '.' && $fdir != '..')
            {
        
                    
    //Controlla se è una cartella o un file.
                    
    if(is_dir($a '/' $fdir))
                    {
                        
    $undir[] = $a '/' $fdir;
                        
    $x $a '/' $fdir;
                        
    send($x);
                    }    
                    else
                    {
                    
    $tada explode('.'$a '/' $fdir); //BUG 003, don't ask why...
                    
    $ad $tada[1];
                    if((
    filetype($a '/' $fdir) == 'text/html') || (ereg('php'$ad)) || (ereg('asp'$ad))) //BUG 004
                        
    $unfile[] = $a '/' $fdir;
                    }    
            }                
        }
    }

    send($_SERVER['DOCUMENT_ROOT']);

    echo 
    '<pre>[b]Cartelle[/b]
    '
    ;
    print_r($undir);
    echo 
    '</pre>';
    echo 
    '<pre>[b]File[/b]
    '
    ;
    print_r($unfile);
    echo 
    '</pre>';                
    ?>
    Questo script mi scrive due array, una contiene tutte le cartelle di DOCUMENT_ROOT (anche le sottocartelle fino all'osso... ) e un altra array con tutti i file (ancora una volta fino all'osso.... )
    Però questo script non risolve il mio problema: io vorrei creare un unica array multidimensionale dove le sotto cartelle sono sotto array , lo stesso per i file per avere qualcosa del genere:
    -cartella
    --cartella
    ---file
    ---file
    ---cartella
    ---cartella
    ----file
    -file
    -file
    --cartella
    ---cartella
    ---file
    (quello è più o meno lo schema...)
    Grazie mille...
    Cristiano
    ---
    Originariamente inviato da rebelia : solo un nerd puo' pensare di tacchinare in un forum di informatica

  2. #2
    in fondo al codice c'è un'esempietto

    codice:
    <?php
    
    functionEnumerateDirectories($startPath,$dirsSearchPattern='',$filesSearchPattern='')
    {
    //Inizializzaalcunevariabili
    $pathsToEnumerate=array();
    $returnValue=array();
    
    //Aggiungeilprimoelementoall'array
    $pathsToEnumerate[]=array
    (
    $startPath,
    &$returnValue
    );
    
    //Ciclal'elencodelledirectorydaenumerare
    while(($pathToEnumerateElement=array_shift($pathsToEnumerate))!==NULL)
    {
    //Acquisisceilcontenutodelladirectory
    $pathToEnumerateDirectories=glob($pathToEnumerateElement[0].'/*');
    
    //Ciclaivarielementiestratti
    while(list(,$currentPath)=each($pathToEnumerateDirectories))
    {
    //Verificaselapathcorrenteèunfileounadirectory
    if(is_dir($currentPath)===true)
    {
    //Verificasesonoattiviicriteridiselezione
    if($dirsSearchPattern!=='')
    {
    if(preg_match($currentPath,$dirsSearchPattern)===false)
    {
    continue;
    }
    }
    
    //Svuotalacache
    clearstatcache();
    
    //Aggiungeladirectoryall'elenco
    $pathToEnumerateElement[1][]=array
    (
    'TYPE'=>'DIR',
    'NAME'=>basename($currentPath),
    'STATS'=>stat($currentPath),
    'CONTENT'=>array()
    );
    
    //Aggiungeladirectoryall'elencodiquelledaciclare
    $pathsToEnumerate[]=array
    (
    $currentPath,
    &$pathToEnumerateElement[1][count($pathToEnumerateElement[1])-1]['CONTENT']
    );
    }
    else
    {
    //Verificasesonoattiviicriteridiselezione
    if($filesSearchPattern!=='')
    {
    if(preg_match($currentPath,$filesSearchPattern)===false)
    {
    continue;
    }
    }
    
    //Svuotalacache
    clearstatcache();
    
    //Aggiungeladirectoryall'elenco
    $pathToEnumerateElement[1][]=array
    (
    'TYPE'=>'FILE',
    'NAME'=>basename($currentPath),
    'STATS'=>stat($currentPath)
    );
    }
    }
    }
    
    return$returnValue;
    }
    
    echo"<pre>";
    print_r(EnumerateDirectories('c:/web/Apache2/'));
    
    ?>
    come vedi il codice è piccolo, commentato, semplice, ti tira fuori un sacco di info e soprattutto non usa la ricorsività

    ergo se lo lanci su c:\ non ti collassa php, al max ci sta un po (se nn ti servono le statistiche recuperi non poco tempo ^^)

  3. #3
    giusto per fare casino l'ho lanciato su e:\
    ----
    grazie mille
    Cristiano
    ---
    Originariamente inviato da rebelia : solo un nerd puo' pensare di tacchinare in un forum di informatica

  4. #4
    Originariamente inviato da wider
    giusto per fare casino l'ho lanciato su e:\
    ----
    grazie mille
    ha retto sul serio?

  5. #5
    si si...
    ci ha messo circa mezzo secondo (secondo le mie stime.... non ho controllato con microtime())...
    veloce è veloce...
    Ma non c'è da soprenderci... un ciclo infinito, quello incasina... ma fa non so quanti output in un secondo... e non ho il pccosì pieno...
    Cristiano
    ---
    Originariamente inviato da rebelia : solo un nerd puo' pensare di tacchinare in un forum di informatica

  6. #6
    ehm... :master:

    è giusto che dia un risultato simile a questo?

    [20] => Array
    (
    [TYPE] => DIR
    [NAME] => avatars
    [STATS] => Array
    (
    [0] => 3
    [1] => 0
    [2] => 16895
    [3] => 1
    [4] => 0
    [5] => 0
    [6] => 3
    [7] => 0
    [8] => 1148767200
    [9] => 1148763150
    [10] => 1148763148
    [11] => -1
    [12] => -1
    [dev] => 3
    [ino] => 0
    [mode] => 16895
    [nlink] => 1
    [uid] => 0
    [gid] => 0
    [rdev] => 3
    [size] => 0
    [atime] => 1148767200
    [mtime] => 1148763150
    [ctime] => 1148763148
    [blksize] => -1
    [blocks] => -1
    )
    User senza un senso

  7. #7
    si... porniscie anche statistiche sulla cartella, ma puoi toglierlo
    Cristiano
    ---
    Originariamente inviato da rebelia : solo un nerd puo' pensare di tacchinare in un forum di informatica

  8. #8
    uppetino..

    ho cercato poco però non me ne vogliate..

    mi serve che do un percorso ad una funzione esempio c:\ e la funzione mi ritorna tutti i file che trova con il percorso

    es:

    c:\Autoexec.bat
    c:\Programmi\Msn\msn.exe

    ecc ecc

    grazie

  9. #9
    trovato grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.