Покинул форум
Сообщений всего: 77
Дата рег-ции: Окт. 2009 Откуда: Пятигорск
Помог: 0 раз(а)
вот хочу написать кусочек для автоматического создания директорий (folder) в заданной директории (www/archiv/razdel). с учетом того, что если название, создающейся директории уже существует, к нему прибавлялась приставка _1, _2, и т.д. (folder_1, folder_2 ...) делаю так
выдает предупреждение:Deprecated: Function ereg_replace() is deprecated in index.php хотя и выводит правильный результат на первом этапе (folder_1), а потом бесконечно перебирает
и такой вопрос: правильно ли так делать или может так, считать в массив названия всех папок директории razdel, проверить в массиве директорию folder ну и если надо то уже прибавлять приставку. правда как считать названия только директории, а не файлов,с этим загвоздка.
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
leshiy_SV пишет:
Выдает предупреждение
Лучше был сделали через PRCE по шаблону s/\/(.*?)$/$1+1/egs - то есть проверяетя есть ли такая директория и если есть то придавляется единица к ее номеру
И хорошо бы добавить проверку на наличие общего пути - то есть сделать рекурсивное создание
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
PeleWin
Отправлено: 12 Февраля, 2010 - 21:29:08
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Февр. 2010
Помог: 0 раз(а)
Можно отказаться от использования регулярных выражений, что, может быть, незначительно ускорит работу скрипта. Я бы внёс такие небольшие изменения:
P.S. бесконечный перебор в вашем скрипте - следствие того, что функция ereg_replace("/$", "_$i", 'www/archiv/razdel/folder1') вернёт неизменённое значение 'www/archiv/razdel/folder1'.
leshiy_SV
Отправлено: 13 Февраля, 2010 - 09:39:34
Гость
Покинул форум
Сообщений всего: 77
Дата рег-ции: Окт. 2009 Откуда: Пятигорск
Помог: 0 раз(а)
Я воспользовался советом Мелкого
Мелкий пишет:
Вот тут хорошая реализация была:
http://forum.php.su/topic.php?fo...27007#1263027007
А именно из этого поста. По-моему наиболее простая реализация.
Вот что получилось.
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
PeleWin пишет:
Можно отказаться от использования регулярных выражений, что, может быть, незначительно ускорит работу скрипта
С одной стороны ваш вариант быстрее тем что не использует регулярные вывражения - но с другой стороны пускай уже имеются папки типа folder_99999 и в тамом случае ваш PHP-скрипт будет перебирать и проверять все 100000 папок что займет много времени - в таком случае оптимальнее взять список папок например ls -la и grep-ом из него на основе регулярного выражения выдернуть папку с самым большим номером
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
leshiy_SV
Отправлено: 13 Февраля, 2010 - 13:48:57
Гость
Покинул форум
Сообщений всего: 77
Дата рег-ции: Окт. 2009 Откуда: Пятигорск
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
leshiy_SV пишет:
А что можно сказать про мой вариант постом выше?
В принципе неплохой вариант как раз реализиующий идею для множества папок
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
leshiy_SV
Отправлено: 13 Февраля, 2010 - 13:59:15
Гость
Покинул форум
Сообщений всего: 77
Дата рег-ции: Окт. 2009 Откуда: Пятигорск
Помог: 0 раз(а)
Единственное что в реале у меня $folder имеет на конце слэш "/"? т.е. например folder/. и как от него избавиться, самым простым способом, чтобы прибавить потом к нему "_$f" я не знаю. подскажите как тут решить проблему?
думаю использовать функцию
оптимальнее взять список папок например ls -la и grep-ом из него на основе регулярного выражения выдернуть папку с самым большим номером
А можно об этом по подробнее. потому как столкнулся с проблемой, в том что если одну или несколько из папок удалить( теб которые в середине списка), то тут проявляются косяки. Получается что общее количество папок меньше чем номер последней папки. и тогда создающаяся папка уже существует (Добавление)
или сделать так
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
leshiy_SV пишет:
А можно об этом по подробнее. потому как столкнулся с проблемой, в том что если одну или несколько из папок удалить( теб которые в середине списка), то тут проявляются косяки. Получается что общее количество папок меньше чем номер последней папки. и тогда создающаяся папка уже существует
В том то и дело что надо искать не количетсво папок с аналогичным именем а номер последней папки - а если вас интересует чтобы пробелов между номерами папок не было то искать номер последней папки до пробела
Самый простой вариант решения это сделать readdir для папки и с помощью регулярного выражения типа m/\/(.*?)_(.*?)$/is в переменной $2 получать номер папки - а далее искать либо максимальную либо первый пробел в нумерации
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
leshiy_SV
Отправлено: 15 Февраля, 2010 - 08:51:25
Гость
Покинул форум
Сообщений всего: 77
Дата рег-ции: Окт. 2009 Откуда: Пятигорск
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
leshiy_SV пишет:
А можно на каком нибудь примере это показать?
Если я правильно понял то вроде бы так
В принципе вы привели верный пример только я бы заменил жадный квантификатор (\d*) на его нежадный аналог (\d*?) - чтобы если в имени папки были еще знаки подчеркивания с цифры он бы их не считал
А в остальном все хорошо
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
leshiy_SV
Отправлено: 15 Февраля, 2010 - 12:32:07
Гость
Покинул форум
Сообщений всего: 77
Дата рег-ции: Окт. 2009 Откуда: Пятигорск
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.