Листинг директорий : как приписыать скрипту постоянно меняющийся путь к файлу? и т.д.

Discussion in 'PHP' started by UnPazz, 7 Dec 2008.

  1. UnPazz

    UnPazz Elder - Старейшина

    Joined:
    30 Aug 2008
    Messages:
    95
    Likes Received:
    43
    Reputations:
    6
    Листинг директорий : ищет файлы и папки в определенной папке.
    Не получается сделать, чтобы открывал найденные папки и искал в них файлы.
    PHP:
    <?php

      $mas_dir
    [0] = '/';  // папка в которой искать.
      
    $i=0;   //счетчики равны нулю : кол-во найденных папок.
      
    $td=0//временная переменная для найденных папок.
      
    $tf=0;  //счетчики равны нулю : кол-во найденных файлов.


      
    while (true == isset($mas_dir) )     //пока есть папки в папках, ищем.
      
    {

         
    //в директории
        
    $mas_dir[$i] = opendir(''.$mas_dir[$i].''); // здесь указывается путь к вновь найденной папке.

        
    $td=$i//временная переменная

         
    while (true == ($file readdir($mas_dir[$i])))
                  {
                   if (
    $file != "." && $file != "..")
                   if (
    is_dir($file) == true )  {   $td=$td+1;  $mas_dir[$td]=$file; };
                   if (
    is_file($file) == true )  { $mas_file[$tf]=$file$tf=$tf+1;  };
                  };
          
    closedir($mas_dir[$i]);

         
    $i=$td//временная переменная

           //вывод на экран
        
    for ($is=0$is<count($mas_dir); $is++)  echo "Dir $is $mas_dir[$is] <br>";
        for (
    $is=0$is<count($mas_file) ; $is++)  echo "File $is $mas_file[$is] <br>";

         
    //если ещё есть папки, то
        
    if (true == isset($mas_dir[$i+1] ) )
          { 
    array_shift($mas_dir);  //удаляем первый элемент массива
             
    $i=$i-1;                     //уменьшаем указатель на единицу
          
    }
           else break; 
    если нетто заканчиваем работу.

      }

    ?> 
    Если в папке найдены папки, то скрипт продолжает работу, копирую названия найденных папок в массив $mas_dir[] . Как только скрипт переберет все папкипройдет по всм папкам он закончит работу. Все найденные файлы, перемещаются в массив $mas_file[].

    При нахождении новых папок, нужна указывать путь к папке (в выделенной строке. Но функция getcwd определяет путь, в котором работает скрипт.

    Как определять путь к найденной папке, чтобы открыть её? И как прописывать постоянно меняющийся путь к вновь найденным папкам в папках (см. выделенную строку)?
     
    #1 UnPazz, 7 Dec 2008
    Last edited: 7 Dec 2008
  2. [dei]

    [dei] Active Member

    Joined:
    24 Nov 2008
    Messages:
    171
    Likes Received:
    112
    Reputations:
    5
    PHP:
    <?php 
    function ls($dir,$level=0) {
        if(!
    $levelchdir($dir);
        
    $dir=opendir('.');
        while (
    $d readdir($dir)) {
            if(
    $d=='.' || $d=='..') continue;
            if(
    is_dir($d)) { 
                echo 
    str_repeat("\t",$level).$d."\n";
                
    chdir($d);
                
    ls($d,$level+1);
                
    chdir('..');
            }
            else if(
    is_file($d))
            {    
                echo 
    str_repeat("\t",$level).$d."\n";
            }
        }
    }

    echo 
    '<pre>';
    ls('.');
    echo 
    '</pre>';
    ?>