Salve,
Vi prego di non evitarmi perchè il codice è un po' lungo
sto cercando di costruire un albero delle cartelle,appongiandomi anche a questo plugin jquery(http://abeautifulsite.net/blog/2007/06/php-file-tree/),di per se il plugin funziona,ma visto che voglio fare l'esaltato ho deciso di inserire pure un lightbox per le immagine(funziona pure questo) e non contento una gallary sempre con lo stesso plugin lightbox una gallery per cartelle...ed ecco il problema:va tutto a rotoli...
Questo è il for con cui invio le informazioni e ricevo:
Codice PHP:
$c=0;
        
$num=0;
        
//originale
    
for($j=0;$j<count($arr);$j++){
        
//originale
           //echo php_file_tree($_SERVER['DOCUMENT_ROOT']."/tree/".$arr[$j], "http://farebury.exofire.net/?file=[link]/");
           
           //aggiunto
           
list($num,$exp)= php_file_tree($_SERVER['DOCUMENT_ROOT']."/tree/".$arr[$j], "http://farebury.exofire.net/?file=[link]/",$c,$num);
           
$c=1;
           echo 
$exp;
           }
     
//fine aggiunto
      
      
?> 
Questo è il codice funzionante fino all'ultimo momento:
Codice PHP:
<?php

function php_file_tree($directory$return_link$extensions = array(),$c,$num) {
    
// Generates a valid XHTML list of all directories, sub-directories, and files in $directory
    // Remove trailing slash
    
if( substr($directory, -1) == "/" $directory substr($directory0strlen($directory) - 1);
    
$code .= php_file_tree_dir($directory$return_link$extensions);
    return 
$code;

    
}

function 
php_file_tree_dir($directory$return_link$extensions = array(), $first_call true,$c,$num) {

    
// Recursive function called by php_file_tree() to list directories/files
    
    // Get and sort directories/files
    
if( function_exists("scandir") ) $file scandir($directory); else $file php4_scandir($directory);
    
natcasesort($file);
    
// Make directories first
    
$files $dirs = array();
    foreach(
$file as $this_file) {
        if( 
is_dir("$directory/$this_file) ) $dirs[] = $this_file; else $files[] = $this_file;
    }
    
$file array_merge($dirs$files);
    
    
// Filter unwanted extensions
    
if( !empty($extensions) ) {
        foreach( 
array_keys($file) as $key ) {
            if( !
is_dir("$directory/$file[$key]") ) {
                
$ext substr($file[$key], strrpos($file[$key], ".") + 1); 
                if( !
in_array($ext$extensions) ) unset($file[$key]);
            }
        }
    }
    
    if( 
count($file) > ) { // Use 2 instead of 0 to account for . and .. "directories"
        
$php_file_tree "<ul";
        if( 
$first_call ) { $php_file_tree .= " class=\"php-file-tree\""$first_call false; }
        
$php_file_tree .= ">";
        foreach( 
$file as $this_file ) {
            if( 
$this_file != "." && $this_file != ".." ) {
                if( 
is_dir("$directory/$this_file") ) {
                    
// Directory
                    
$php_file_tree .= "<li class=\"pft-directory\"><a href=\"#\">".htmlspecialchars($this_file)."</a>";
                    
$php_file_tree .= php_file_tree_dir("$directory/$this_file"$return_link ,$extensionsfalse,$c,$num);
                    
$php_file_tree .= "";
                } else {
                    
// File
                    // Get extension (prepend 'ext-' to prevent invalid classes from extensions that begin with numbers)
                    
$ext "ext-" substr($this_filestrrpos($this_file".") + 1); 
                    
$link str_replace("[link]""$directory/" urlencode($this_file), $return_link);
                    
$link=taglia($link);
                    
$ext=strtolower($ext);
                    if(
$c==0){
                        
$pth1=cutter($link);
                        
$c=1;
                        echo 
"<script>alert('controllo');</script>";
                        }
                    
$pth2=cutter($link);
                    
                    if(
$ext=='ext-png' || $ext=='ext-bmp' || $ext=='ext-jpg'  || $ext=='ext-jpeg'  || $ext=='ext-psd'){//
                        
if($pth2==$pth1)
                               
$php_file_tree .= "<li class=\"pft-file ".$ext."\"><a class='fancybox' data-fancybox-group='button".$num."' href=\"$link\" title='".htmlspecialchars($this_file)."'>" htmlspecialchars($this_file) . "</a>"//originale
                        
else{
                            
$pth1=$pth2;
                            
$num+=1;
                            
$php_file_tree .= "<li class=\"pft-file ".$ext."\"><a class='fancybox' data-fancybox-group='button".$num."' href=\"$link\" title='".htmlspecialchars($this_file)."'>" htmlspecialchars($this_file) . "</a>";
                        }
                        }
                    else
                        
$php_file_tree .= "<li class=\"pft-file " .$ext"\"><a href=\"$link\">" htmlspecialchars($this_file) . "</a>";
                }
            }
        }
        
$php_file_tree .= "[/list]";
    }
    return 
$php_file_tree;
}

// For PHP4 compatibility
function php4_scandir($dir) {
    
$dh  opendir($dir);
    while( 
false !== ($filename readdir($dh)) ) {
        
$files[] = $filename;
    }
    
sort($files);
    return(
$files);
}

function 
taglia($stringa){
$stra=str_replace('?file=/home/oxoc/public_html/'''$stringa);
$leng=strlen($stra)-1;
return(
substr($stra0$leng));
}

function 
cutter($stringa){
    
$pos =strripos($stringa'/');
    
$leng=strlen($stringa);
    
//echo"<script>alert('".substr($stringa,0,$pos)."')</script>";
    
return(substr($stringa,0,$pos));
}
Invece questo è il codice non funzionante:
Codice PHP:
<?php

function php_file_tree($directory$return_link$extensions = array(),$c,$num) {
    
// Generates a valid XHTML list of all directories, sub-directories, and files in $directory
    // Remove trailing slash
    
if( substr($directory, -1) == "/" $directory substr($directory0strlen($directory) - 1);
    
    
//originale
    /*$code .= php_file_tree_dir($directory, $return_link, $extensions);
    return $code;*/
    //fine originale
    
    //aggiunto
    
    
list($pop[0],$pop[1])=php_file_tree_dir($directory$return_link$extensions);
    echo 
"<script>alert('percorso=".$pop[0]."');</script>";
    echo 
"<script>alert('numero=".$pop[1]."');</script>";
    
$code.=$pop[0];
    
$num=$pop[1];
    
$ret[] = $num;
        
$ret[]= $code;
    return 
$ret;
    
//fine aggiunto
}

function 
php_file_tree_dir($directory$return_link$extensions = array(), $first_call true,$c,$num) {

    
// Recursive function called by php_file_tree() to list directories/files
    
    // Get and sort directories/files
    
if( function_exists("scandir") ) $file scandir($directory); else $file php4_scandir($directory);
    
natcasesort($file);
    
// Make directories first
    
$files $dirs = array();
    foreach(
$file as $this_file) {
        if( 
is_dir("$directory/$this_file) ) $dirs[] = $this_file; else $files[] = $this_file;
    }
    
$file array_merge($dirs$files);
    
    
// Filter unwanted extensions
    
if( !empty($extensions) ) {
        foreach( 
array_keys($file) as $key ) {
            if( !
is_dir("$directory/$file[$key]") ) {
                
$ext substr($file[$key], strrpos($file[$key], ".") + 1); 
                if( !
in_array($ext$extensions) ) unset($file[$key]);
            }
        }
    }
    
    if( 
count($file) > ) { // Use 2 instead of 0 to account for . and .. "directories"
        
$php_file_tree "<ul";
        if( 
$first_call ) { $php_file_tree .= " class=\"php-file-tree\""$first_call false; }
        
$php_file_tree .= ">";
        foreach( 
$file as $this_file ) {
            if( 
$this_file != "." && $this_file != ".." ) {
                if( 
is_dir("$directory/$this_file") ) {
                    
// Directory
                    //$name=nome(htmlspecialchars($this_file))
                    //$php_file_tree .= "<li class=\"pft-directory\"><a href=\"#\">".$name."</a>";
                    
$php_file_tree .= "<li class=\"pft-directory\"><a href=\"#\">".htmlspecialchars($this_file)."</a>";
                    
$php_file_tree .= php_file_tree_dir("$directory/$this_file"$return_link ,$extensionsfalse,$c,$num);
                    
$php_file_tree .= "";
                } else {
                    
// File
                    // Get extension (prepend 'ext-' to prevent invalid classes from extensions that begin with numbers)
                    
$ext "ext-" substr($this_filestrrpos($this_file".") + 1); 
                    
$link str_replace("[link]""$directory/" urlencode($this_file), $return_link);
                    
$link=taglia($link);
                    
$ext=strtolower($ext);
                    
//aggiunto ora//
                    
if($c==0){//
                        
$pth1=cutter($link);//
                        
$c=1;//
                        
echo "<script>alert('controllo');</script>";
                        }
                    
$pth2=cutter($link);//
                    
                    
if($ext=='ext-png' || $ext=='ext-bmp' || $ext=='ext-jpg'  || $ext=='ext-jpeg'  || $ext=='ext-psd'){//
                        
if($pth2==$pth1)//
                               
$php_file_tree .= "<li class=\"pft-file ".$ext."\"><a class='fancybox' data-fancybox-group='button".$num."' href=\"$link\" title='".htmlspecialchars($this_file)."'>" htmlspecialchars($this_file) . "</a>"//originale
                        
else{//
                            
$pth1=$pth2;//
                            
$num+=1;//
                            
$php_file_tree .= "<li class=\"pft-file ".$ext."\"><a class='fancybox' data-fancybox-group='button".$num."' href=\"$link\" title='".htmlspecialchars($this_file)."'>" htmlspecialchars($this_file) . "</a>";//
                        
}//
                        
}//
                    
else
                        
$php_file_tree .= "<li class=\"pft-file " .$ext"\"><a href=\"$link\">" htmlspecialchars($this_file) . "</a>";
                }
            }
        }
        
$php_file_tree .= "[/list]";
    }
    
$arco[0]=$php_file_tree;
    
$arco[1]=$num;
    return 
$arco;
    
//return $php_file_tree;
}

// For PHP4 compatibility
function php4_scandir($dir) {
    
$dh  opendir($dir);
    while( 
false !== ($filename readdir($dh)) ) {
        
$files[] = $filename;
    }
    
sort($files);
    return(
$files);
}

//cut link
function taglia($stringa){
$stra=str_replace('?file=/home/oxoc/public_html/'''$stringa);
$leng=strlen($stra)-1;
return(
substr($stra0$leng));
}
//cut path
function cutter($stringa){
    
$pos =strripos($stringa'/');
    
$leng=strlen($stringa);
    
//echo"<script>alert('".substr($stringa,0,$pos)."')</script>";
    
return(substr($stringa,0,$pos));
}
Questo invece è il codice original originale(quello del plug):
Codice PHP:
<?php

function php_file_tree($directory$return_link$extensions = array()) {
    
// Generates a valid XHTML list of all directories, sub-directories, and files in $directory
    // Remove trailing slash
    
if( substr($directory, -1) == "/" $directory substr($directory0strlen($directory) - 1);
    
$code .= php_file_tree_dir($directory$return_link$extensions);
    return 
$code;
}

function 
php_file_tree_dir($directory$return_link$extensions = array(), $first_call true) {
    
// Recursive function called by php_file_tree() to list directories/files
    
    // Get and sort directories/files
    
if( function_exists("scandir") ) $file scandir($directory); else $file php4_scandir($directory);
    
natcasesort($file);
    
// Make directories first
    
$files $dirs = array();
    foreach(
$file as $this_file) {
        if( 
is_dir("$directory/$this_file) ) $dirs[] = $this_file; else $files[] = $this_file;
    }
    
$file array_merge($dirs$files);
    
    
// Filter unwanted extensions
    
if( !empty($extensions) ) {
        foreach( 
array_keys($file) as $key ) {
            if( !
is_dir("$directory/$file[$key]") ) {
                
$ext substr($file[$key], strrpos($file[$key], ".") + 1); 
                if( !
in_array($ext$extensions) ) unset($file[$key]);
            }
        }
    }
    
    if( 
count($file) > ) { // Use 2 instead of 0 to account for . and .. "directories"
        
$php_file_tree "<ul";
        if( 
$first_call ) { $php_file_tree .= " class=\"php-file-tree\""$first_call false; }
        
$php_file_tree .= ">";
        foreach( 
$file as $this_file ) {
            if( 
$this_file != "." && $this_file != ".." ) {
                if( 
is_dir("$directory/$this_file") ) {
                    
// Directory
                    
$php_file_tree .= "<li class=\"pft-directory\"><a href=\"#\">" htmlspecialchars($this_file) . "</a>";
                    
$php_file_tree .= php_file_tree_dir("$directory/$this_file"$return_link ,$extensionsfalse);
                    
$php_file_tree .= "";
                } else {
                    
// File
                    // Get extension (prepend 'ext-' to prevent invalid classes from extensions that begin with numbers)
                    
$ext "ext-" substr($this_filestrrpos($this_file".") + 1); 
                    
$link str_replace("[link]""$directory/" urlencode($this_file), $return_link);
                    
$php_file_tree .= "<li class=\"pft-file " strtolower($ext) . "\"><a href=\"$link\">" htmlspecialchars($this_file) . "</a>";
                }
            }
        }
        
$php_file_tree .= "[/list]";
    }
    return 
$php_file_tree;
}

// For PHP4 compatibility
function php4_scandir($dir) {
    
$dh  opendir($dir);
    while( 
false !== ($filename readdir($dh)) ) {
        
$files[] = $filename;
    }
    
sort($files);
    return(
$files);
}
Questo è l'output giusto:
codice:
    scuola
    IMG_0398.JPG

    non vis
        IMG_0017.JPG
Questo è l'output sbagliato:
codice:
    scuolaArray
    IMG_0398.JPG

    non visArray