Подскажите как реализовать... мне надо сделать что бы скрипт рекурсивно спускался по каталогам и выбирал от туда все файлы с расширением .php .dat и каждому файлу что быбыла своя ячейка масива или что бы все имена этих файлов сохранялист в файл. пожалуйств.
обязательно рекурсивно?
ну он же написал что – да, рекурсивно
)
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. т.к. как мне кажется твоя главная проблема заключалась в том что ты не можешь построить дерево
не у меня проблема не в этом рекурсивно я сделал а вот когда делаю проверку на разрешение то выдает ошибку и все не чего не помагает вобше:(
Как делаешь проверку? Код в студию!
<?php
$filename = "test.php";
var_dump (preg_match ('/\.(php|dat)$/', $filename)); // Выведет int (1)
?>
у меня по другому сначало рекурсивноотсеиваем файл потом $razr=explode(".",$dirname/$file);
if ($razr[1]="php" || $razr[1]="dat"){// тут что делаем если условие верно}
Без один конечно, но это индуский код! самое элементарно – файл называется user.class.php
Что получишь в $razr[1]??? Делай как я предложил! Это кстати этот код выдаёт ошибку??? И Что ты хотел сказать вот этим
> $dirname/$file
?
там когда рекурусивно идет проверка if(is_file($dirname/$file){здесь тот код}
чё ты вообще запутался!!! Нафига ты делишь $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;
}
напиши пожалуйста код мне для cms на которой я сижу хочу поменят полностью структуру папок то есть берем все файлы и изменяем все надписи local на data я чет вобще не втыкаю:(
Ты серьёзно чтоли???
да просто вобще не доганю что да как сделать там около 900 файлов и в каждом есть запрос в локал
просто у меня двиг без использования бд сейчас изучаю пых и на нем эксперементы провожу в дальнейшем хочу его перевести на мускул но для этого мне еще рано:)
Мда… Хочешь бескорысно помочь человеку, а он тебе на шею пытается залезть! Проблему написал (в первом топике), я тебе её решил! Тема закрыта!!!
извени ты меня просто не правельно понял ну и на этом спасибо, еще раз извени если что. Тема закрыта!
используй функцию glob для сканирования директорий
а кто тебе сказал что с файлами проще чем с бд. базы данных как раз и создавались, чтобы было проще.
Во всех самоучителях сначала учат работать с файлами, а как мы видим он учиться! А раз в самоучители первее (причём намного) идут файлы, то складывается впечатление что БД это что-то очень сложное чем файлы!
> используй функцию glob для сканирования директорий
ради интереса (уже года 4-5 на PHP программирую, о такой впервые слышу) зачем её использывать? Чем мой вариант не подходит?
твой вариант подходит, только вместо регулярок лучше использовать glob
http://php.net/glob
там, даже есть пример похожий
Плиско AmdY Вячеслав +