Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Обход файловой системы

Сообщения:  [1-10]   [11-16] 

 
 автор: Akira   (29.07.2005 в 13:55)   письмо автору
 
   для: Akira   (21.07.2005 в 23:06)
 

Альтернатива

<?php 
function scan_dir($dirname

    
# Если путь пустой, то используем текущий каталог 
    
empty($dirname) ? $dirname "*" $dirname $dirname."/*"
    
$dir glob($dirname); 
     if (
$dir
     { 
         foreach(
$dir as $filename
             { 
                 
                if (
is_file($filename)) 
                { 
                     echo 
"$filename - "
                      echo 
date("m.d.y",filemtime($filename))." - "
                      echo 
filesize($filename)."<br>"
                } 
                if (
is_dir($filename)) 
                { 
                    
scan_dir($filename); 
                    echo 
"$filename <br />"
                } 
             } 
         } 
     } 
scan_dir(""); 
?>

   
 
 автор: cheops   (22.07.2005 в 12:38)   письмо автору
 
   для: Akira   (22.07.2005 в 00:42)
 

Глобальные переменные обычно только запутывают код, если есть возможность написать код без них - нужно поступать именно так - это потом окупится. Использовать их следует только тогда, когда вообще никак не получается без них обойтись.

   
 
 автор: Akira   (22.07.2005 в 10:35)   письмо автору
 
   для: isset   (22.07.2005 в 02:34)
 

:) По-моему это общая проблема програмистов ;)) Мне на пример иногда требуеться до 5 мин. что бы осмыслить что я написал и как это работает :)

   
 
 автор: isset   (22.07.2005 в 02:34)   письмо автору
 
   для: Akira   (22.07.2005 в 01:42)
 

Будто я понимаю что пишу :-)

   
 
 автор: Akira   (22.07.2005 в 01:42)   письмо автору
 
   для: isset   (22.07.2005 в 01:27)
 

Лично для меня этот код просто набор символов, который трудно прочитать. :))
Я думаю, что несколько комментариев не помешало бы.

   
 
 автор: isset   (22.07.2005 в 01:27)   письмо автору
 
   для: Akira   (22.07.2005 в 01:23)
 

Т.к. эта функция только в PHP 5 появилась, а итераторами если делать, то намного удобнее (выше я уже привел пример, можно например узнать размер файла, полный путь к нему, права , владельца, группу ....) да и просто украсить список можно :)

   
 
 автор: Akira   (22.07.2005 в 01:23)   письмо автору
 
   для: isset   (22.07.2005 в 01:12)
 

А зачем изобретать колесо? :)
http://php.net/scandir

   
 
 автор: isset   (22.07.2005 в 01:12)   письмо автору
 
   для: Akira   (22.07.2005 в 00:42)
 

Написал для PHP5 :

<?php
function list_dir($dit,$nbsp='') {
   for( ; 
$dit->valid(); $dit->next()) {
       if(
$dit->isDir() && !$dit->isDot()) {
           echo 
$nbsp.' - <b>'.$dit->current().':</b><br>';
           if(
$dit->hasChildren()) echo list_dir($dit->getChildren(),$nbsp.'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');
       } elseif(
$dit->isFile()) echo $nbsp.$dit->current().' (<i>'.$dit->getSize().' байт</i>)<br>';
   }
}
list_dir(new RecursiveDirectoryIterator('c:/www'));
?>


Правда если только файлы нужны:

<php
foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator('./')) as $list) {
    echo $list->current().'<br>';
}
?>

   
 
 автор: Akira   (22.07.2005 в 00:42)   письмо автору
 
   для: cheops   (21.07.2005 в 23:32)
 

Понятно, интересно , а можно скрипт облегчить используя glob? У меня как-то не получилось, потому, что стал виснуть Апач :(

   
 
 автор: cheops   (21.07.2005 в 23:32)   письмо автору
 
   для: Akira   (21.07.2005 в 23:06)
 

1) Чтобы если файл на или директория начинаются с 0 не происходило сбоя - такое имя будет интерпретироваться как false без !==
2) Там внизу рабочий вариант - первый сбойный, параметры ,$fd,$fb - нужно убрать.

   

Сообщения:  [1-10]   [11-16] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования