Делимся секретами создания сайтов

Помогите пожалуйста

Подскажите как реализовать... мне надо сделать что бы скрипт рекурсивно спускался по каталогам и выбирал от туда все файлы с расширением .php .dat и каждому файлу что быбыла своя ячейка масива или что бы все имена этих файлов сохранялист в файл. пожалуйств.

Ответы: 19 → “Помогите пожалуйста”

  1. Александр Thy Ответить

    обязательно рекурсивно?

  2. Андрей Мисюра Ответить

    ну он же написал что – да, рекурсивно ;) )

  3. Михаил Полянин Ответить

    function generateTree ($starting_path = false)
    {
    $tree = Array ();
    if (!$starting_path)
    $starting_path = '.';
    $descriptor = opendir ($starting_path);
    while ($file = readdir ($descriptor))
    {
    if ($file == '.' || $file == '..')
    continue;
    if (is_dir ($starting_path . '/' . $file))
    {
    $tree[$file] = Array ();
    $tree[$file] = generateTree ($starting_path . '/' . $file);
    }
    else
    {
    $tree[] = $file;
    }
    }
    return $tree;
    }

    Вот держи мою функцию для построения дерева. Вызов функции возвратит массив дерева файлов начиная от $starting_path.
    > выбирал от туда все файлы с расширением .php .dat
    думаю сам вставишь такую проверку куда надо
    > что бы все имена этих файлов сохранялист в файл
    и это тоже

    P.S. т.к. как мне кажется твоя главная проблема заключалась в том что ты не можешь построить дерево

  4. Даниил Саратовский Ответить

    не у меня проблема не в этом рекурсивно я сделал а вот когда делаю проверку на разрешение то выдает ошибку и все не чего не помагает вобше:(

  5. Михаил Полянин Ответить

    Как делаешь проверку? Код в студию!
    <?php

    $filename = "test.php";
    var_dump (preg_match ('/\.(php|dat)$/', $filename)); // Выведет int (1)

    ?>

  6. Даниил Саратовский Ответить

    у меня по другому сначало рекурсивноотсеиваем файл потом $razr=explode(".",$dirname/$file);
    if ($razr[1]="php" || $razr[1]="dat"){// тут что делаем если условие верно}

  7. Михаил Полянин Ответить

    Без один конечно, но это индуский код! самое элементарно – файл называется user.class.php
    Что получишь в $razr[1]??? Делай как я предложил! Это кстати этот код выдаёт ошибку??? И Что ты хотел сказать вот этим
    > $dirname/$file
    ?

  8. Даниил Саратовский Ответить

    там когда рекурусивно идет проверка if(is_file($dirname/$file){здесь тот код}

  9. Михаил Полянин Ответить

    чё ты вообще запутался!!! Нафига ты делишь $dirname на $file??? )))) Используй мой код (специально для тебя с изменениями):
    function generateTree ($starting_path = false)
    {
    $tree = Array ();
    if (!$starting_path)
    $starting_path = '.';
    $descriptor = opendir ($starting_path);
    while ($file = readdir ($descriptor))
    {
    if ($file == '.' || $file == '..')
    continue;
    if (is_dir ($starting_path . '/' . $file))
    {
    $tree[$file] = Array ();
    $tree[$file] = generateTree ($starting_path . '/' . $file);
    }
    else
    {
    if (preg_match ('/\.(php|dat)$/', $filename))
    continue;
    $tree[] = $file;
    }
    }
    return $tree;
    }

  10. Даниил Саратовский Ответить

    напиши пожалуйста код мне для cms на которой я сижу хочу поменят полностью структуру папок то есть берем все файлы и изменяем все надписи local на data я чет вобще не втыкаю:(

  11. Михаил Полянин Ответить

    Ты серьёзно чтоли???

  12. Даниил Саратовский Ответить

    да просто вобще не доганю что да как сделать там около 900 файлов и в каждом есть запрос в локал

  13. Даниил Саратовский Ответить

    просто у меня двиг без использования бд сейчас изучаю пых и на нем эксперементы провожу в дальнейшем хочу его перевести на мускул но для этого мне еще рано:)

  14. Михаил Полянин Ответить

    Мда… Хочешь бескорысно помочь человеку, а он тебе на шею пытается залезть! Проблему написал (в первом топике), я тебе её решил! Тема закрыта!!!

  15. Даниил Саратовский Ответить

    извени ты меня просто не правельно понял ну и на этом спасибо, еще раз извени если что. Тема закрыта!

  16. Плиско Вячеслав Ответить

    используй функцию glob для сканирования директорий
    а кто тебе сказал что с файлами проще чем с бд. базы данных как раз и создавались, чтобы было проще.

  17. Михаил Полянин Ответить

    Во всех самоучителях сначала учат работать с файлами, а как мы видим он учиться! А раз в самоучители первее (причём намного) идут файлы, то складывается впечатление что БД это что-то очень сложное чем файлы!

    > используй функцию glob для сканирования директорий

    ради интереса (уже года 4-5 на PHP программирую, о такой впервые слышу) зачем её использывать? Чем мой вариант не подходит?

  18. Плиско Вячеслав Ответить

    твой вариант подходит, только вместо регулярок лучше использовать glob
    http://php.net/glob
    там, даже есть пример похожий

  19. Алексей Некторович Ответить

    Плиско AmdY Вячеслав +

Ответить