Вопрос № 155402: Уважаемые эксперты! Передо мной стоит задача: вывести в коде страницы список, пунктами которого являются изображения, хранящиеся в определенной папке, например, в папке "images/photos" (код в приложении). Скажите, пожалуйста, как я мо...
Вопрос № 155.402
Уважаемые эксперты! Передо мной стоит задача: вывести в коде страницы список, пунктами которого являются изображения, хранящиеся в определенной папке, например, в папке "images/photos" (код в приложении). Скажите, пожалуйста, как я могу сделать подобное средствами php?
Отвечает: Товарищ Бородин
Здравствуйте, Осипова Светлана! На самом деле нет ничего проще :) Предположим, Ваша папка имеет относительно скрипта расположение "images/photos", а версия PHP на Вашем компьютере/сервере - 5. Тогда задача упрощается до примитивизма. <?php // Список изображений, хранящихся в Вашей папке и имеющих расширение .jpg $imageList = glob('images/photos/*.jpg'); // Далее, собственно, вывод списка ?> <ul> <?php foreach ($imageList as $image) { ?> <li><img
src="<?php echo $image; ?>"> </li> <?php } ?> </ul>
Разберем, что же мы сделали. glob - функция, доступная, начиная с 5-ой версии PHP(почему я и заострил на этом внимание). Она находит все файлы, удовлетворяющие шаблону, передаваемому ей в качестве первого параметра и возвращает массив с именами(опять же удовлетворяющими шаблону). Потом мы разбираем массив по отдельным элементам, и кажды
й этот элемент подставляем в атрибут src. Генерируется столько пунктов списка, сколько элементов в массиве. Собственно, в такой задаче принципиальный момент - это получение массива ссылок на файлы. Если версия PHP - 4, что уже, без сомнения, довольно редкий случай, так как большинство хостеров предоставляют как PHP4, так и PHP5, а возможности PHP5 гораздо выше, чем PHP4, соответственно, нет смысла отдавать предпочтение 4-ой версии. Средствами PHP4 такую задачу следует решать с помощью связки функций open_dir
- readdir. Причем функция readdir будет возвращать имена всех файлов в каталоге, и уже задача программиста решить, является ли файл изображением или нет. Примерный код выглядит так: <ul> <?php $dir = opendir("images/photos"); while($file = readdir($dir)) { if (preg_match(".(jpe?g|gif|png)$", $file)) { ?> <li><img src="<?php echo $file; ?>" /></li> <
?php } } ?> </ul>
С уважением, Товарищ Бородин
Ответ отправил: Товарищ Бородин (статус: Профессионал) Россия, Новосибирск Тел.: +7-923-245-3366 ICQ: 346988855 ---- Ответ отправлен: 22.12.2008, 20:59
Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 239349 на номер 1151 (Россия) | Еще номера >>
Отправить WebMoney:
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5 Комментарий оценки: большое спасибо! полный и понятный ответ )
Вы имеете возможность оценить этот выпуск рассылки. Нам очень важно Ваше мнение!
* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.
Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!
Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.
Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.