Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перебор файлов в папке, по шаблону 
:(
    Опции темы
Gold Dragon
  Дата 27.8.2004, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Вот здесь был у меня вопрос, народ сказал, что переименовать файлы в лёгкую можно в PHP.

Так как я только начинаю изучать этот замечательный язык, то не посылайте меня к учебникам и справочникам, я их уже почитал.. smile.gif Хочется услышать реальные советы..

Вопрос: мне нужно выбрать определённую папку, установить шаблон (например, *.JPG) и поочерёдно названия файлов обрабатывать в программе..

Прошу не готовый код, а механизм реализации и какие функции использовать, остальное сам попробую.

PS
прошу прощение за лирику tounge.gif

Это сообщение отредактировал(а) Red Dragon - 27.8.2004, 12:04


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
<Spawn>
Дата 27.8.2004, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 1
Всего: 64



Не знаю можно ли сразу шаблон указать, но можно сделать таким образом(расширение проверяй регулярными выражениями, например ):

Код
<?php
 if ($dir = opendir("."))
 {
   while ($file = readdir($dir))
     //тут можешь проверить расширение
     if (ereg(".php$", $file))
       echo("$file<br>");
   closedir($dir);
 }
?>


Это сообщение отредактировал(а) <Spawn> - 27.8.2004, 14:58


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Gold Dragon
Дата 27.8.2004, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



То есть так

здесь я проверяю на наличие директории и одновременно присваиваю её $dir
if ($dir = opendir("c:/windows/"))

Здесь цикл до тех пор, пока не кончатся поддериктории и файлы и результат каждый раз заново присваивается $file
while ($file = readdir($dir))

Вопрос: а как опредилить это файл или поддериктория, и в чём отличие от
while (false !== ($file = readdir($dir)))

Это сообщение отредактировал(а) Red Dragon - 27.8.2004, 15:23


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
<Spawn>
Дата 27.8.2004, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 1
Всего: 64



Вот тебе наборчик функций - is_dir(), is_executable(), is_file()

Это сообщение отредактировал(а) <Spawn> - 27.8.2004, 15:32


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Gold Dragon
Дата 27.8.2004, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



<Spawn>
Всё, разобрался. Отлично работает. (трудно пока все функции запомнить)

Тока встретил, как я уже упоминул, вот это
Цитата
Так не правильно
while ($file = readdir($dir))

А так правильно
while (false !== ($file = readdir($dir)))
но не понял почему sad.gif



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Akina
Дата 27.8.2004, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 5
Всего: 454



Red Dragon
Цитата
while ($file = readdir($dir))

Еще бы! конечно неправильно!!! не путай операции сравнения и операции присвоения.

Ты что делаешь?
Сперва вызываешь функцию readdir($dir).
Потом полученный от нее результат присваиваешь переменной $file.
Потом присвоенное переменной $file значение используешь в качестве условия в структуре WHILE (операция скобка!!!).

Должно быть:

Код
while ($file == readdir($dir))



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
<Spawn>
Дата 27.8.2004, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 1
Всего: 64



Red Dragon Как ни странно но у меня все работает. Функция readdir возвращает fasle в случае, если не было найдено следущего файла в директории. Это и указывает на оканчиние цикла.

Код
while ($file == readdir($dir))


Какой смысл данного кода? с чем будет вестись сравнение? Смысл приведенного мною кода в том что значением переменной $file является результат функции readdir, а не сравнение данной переменной с результатом.

Цитата
А так правильно
while (false !== ($file = readdir($dir)))


Как это вообще заработало? Это что за оператор !== smile.gif? Или я чего то не знаю о PHP или это не верно.

Это сообщение отредактировал(а) <Spawn> - 27.8.2004, 16:39


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Ignat
Дата 27.8.2004, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 10
Всего: 73



Бр-р-р, очём речь?
while ($file == readdir($dir)) - ахинея в данном контесте.
присваивание вернет true в случае если правая часть не false таким образом запись:
Код
while ($file = readdir($dir))

абсолютно верна.
Добавлено @ 16:48
<Spawn>
Цитата
Это что за оператор !==


Если не изменяет мне память "не эквивалентно" и он имеет место в php.



--------------------
Теперь при чем :P
PM   Вверх
<Spawn>
Дата 27.8.2004, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 1
Всего: 64



Ignat Дак не эквивалентность вроде как != или это !== аналог? Ни где не встречал такого.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Ignat
Дата 27.8.2004, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 10
Всего: 73



!= "не равно", антипод ==
!== "не эквивалентно", антипод ===

Ссылка по теме


--------------------
Теперь при чем :P
PM   Вверх
<Spawn>
Дата 27.8.2004, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 1
Всего: 64



Ignat Сенк, буду знатьsmile.gif


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Gold Dragon
Дата 27.8.2004, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Народ, я пока ещё не могу спорить по вопросам программирования PHP, но мне кажется, что этот код более грамотный
Цитата
while (false !== ($file = readdir($dir))) или while (false != ($file = readdir($dir)))
В данном случае это не имеет значение.

А вот этот неправильный tounge.gif код, как ни странно, работает
Код
while ($file = readdir($dir))
В принципе, если файл есть, то true, если нет - false

Так как грамотнее (оба варинта работают)?


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
<Spawn>
Дата 27.8.2004, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 1
Всего: 64



Red Dragon Я уже привык к записям вида
Код
while ($file = readdir($dir))


и конструкция
Код
while (false !== ($file = readdir($dir))) или while (false != ($file = readdir($dir)))

кажется мне более трудной для мгновенного восприятияsmile.gif То есть первый вариант по мне более читабельный, хотя это мое имхо.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Gold Dragon
Дата 28.8.2004, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



И ещё один маленький вопрос по теме. Как вызвать окно для выбора директории и присвоение значения $dir


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
IZ@TOP
Дата 29.8.2004, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Red Dragon
Ни как. Это PHP, он не работает с WinAPI (за исключением некоторых случаев).
Модератор: Давайте вернёмся к теме обсуждения.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.4476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.