Офис НП AMWAY в Ярославле
Офис Амвей в Ярославле
На карте Офис AMWAY в ЯрославлеПрием и выдача заказов, презентация продукции Амвей, мастер–классы, вопросы по бизнесу Amway:
Адрес: улица Валентины Терешковой, дом 1 (Вход со двора)
Телефон: +7 (920) 112-00-91
Email: matyxho@mail.ru
Сайт: https://www.amway.ru/user/lebedem
Визитка: http://yar.meweb.ru
Иерархия статей
Статьи » Программирование » PHP: Вывод изображений из папки (директории)
Сниппет
При создании одного из плагинов понадобилось мне показать все изображения из указанной папки (директории). Признаться, раньше я не работал с подобным, но все новое всегда вызывает азарт. Поэтому, чуть погуглив и покурив мануалы, я набросал несколько строк кода, коими и поделюсь с вами.
PHP: Вывод изображений из папки (директории)
Опубликовал  Pisatel Pisatel Добавлено  06-04-2015 15:36 06 Апрель 2015 15:36:11 32364  Прочтений 32364 Прочтений
Обновлено: 06-04-2015 16:00 Обновлено: 06 апреля 2015 16:00:17  printer
В данной статье приведу небольшой скрипт, который ищет изображения в указанной папке (директории) и выводит их. Для начала — вывод всех изображений из папки (как всегда- комментарии прямо в коде):

Код: PHP


$wimage = "";

$fimg = "";

$path = "images/"; // задаем путь до сканируемой папки с изображениями

$images = scandir($path); // сканируем папку

if ($images !== false) { // если нет ошибок при сканировании

$images = preg_grep("/\.(?:png|gif|jpe?g)$/i", $images); // через регулярку создаем массив только изображений

if (is_array($images)) { // если изображения найдены

foreach($images as $image) { // делаем проход по массиву

$fimg .= "<img src='".$path.htmlspecialchars(urlencode($image))."' alt='".$image."' />";

}

$wimage .= $fimg;

} else { // иначе, если нет изображений

$wimage .= "<div style='text-align:center'>Не обнаружено изображений в директории!</div>\n";

}

} else { // иначе, если директория пуста или произошла ошибка

$wimage .= "<div style='text-align:center'>Директория пуста или произошла ошибка при сканировании.</div>";

}

echo $wimage; // выводим полученный результат




Однако, задачи бывают разные. Попробую привести несколько примеров. Например, нам необходимо вывести не все изображения, а только первые 10. Для этого нужно будет лишь задать дополнительное условие при проходе по массиву. Итак, код с комментариями:

Код: PHP
    $stop = 9; // на 1 меньше, так как ключи в массиве начинаются с 0, то есть

// 0, 1, 2..., значит первые 10 значений закончатся на ключе 9

foreach($images as $key => $image) { // делаем проход по массиву, выбирая ключ => значение

$fimg .= "<img src='".$path.htmlspecialchars(urlencode($image))."' alt='".$image."' />";

if ($stop == $key) break; // останавливаем проход по массиву, когда 9==9

}




Следующий пример — выберем, например, каждое второе изображение:

Код: PHP
    foreach($images as $key => $image) { // делаем проход по массиву, выбирая ключ => значение

if ($key % 2 == 0) { // если целочисленный остаток от деления ключа на 2 равен 0

$fimg .= "<img src='".$path.htmlspecialchars(urlencode($image))."' alt='".$image."' />";

} else { // иначе

continue; // пропускаем изображение

}

}




Ну и на закуску — выберем 5 случайных (рандомных) изображений из папки (каталога). Для этого я воспользуюсь php–функцией array_rand();, и код придется чуть усложнить, увеличив буквально на пару строк:

Код: PHP
    $arand = array_rand($images, 5); // получили массив 5 случайных ключей (ключ массива => ключ изображения)

$i = 0;

foreach($images as $key => $image) { // проход по массиву

if ($arand[$i] == $key) {

// если значение случайного ключа равно текущему ключу- выводим изображение

$fimg .= "<img src='".$path.htmlspecialchars(urlencode($image))."' alt='".$image."' />";

} else { // иначе

continue; // пропускаем

}

$i++;

}




Если кто–то сможет сделать это более изящно — милости прошу. Я лично всегда стараюсь использовать для работы с массивами функции, которые специально предназначены для работы с ними и не изобретать велосипедов.

На этом, в общем, и закончу. Удачи в кодинге и процветания твоему проекту!
Понравилась статья?
Метки для данной статьи
Похожие статьи
Поделиться:   
Последние активные темы форума
  Темы Просмотров Ответов Последние сообщения
folder Вопрос по переделке bb-кода
PHP, MySQL
22366 5 Pisatel
26. мая 2017
folder Вопросы по Ajax форме обратной связи
CMS PHP Fusion
68742 48 Ditrin
19. февраля 2017
folder BBCode YouTube Video Colorbox mod
CMS PHP Fusion
15387 2 Pisatel
10. декабря 2016
folder Как лучше создать собственную страницу?
CMS PHP Fusion
17924 17 Pisatel
11. мая 2016
folder Небольшие вопросы по скриптам магазина и катало...
PHP, MySQL
145200 80 Pisatel
11. января 2016
folder BBCode Code mod
CMS PHP Fusion
14439 0 Pisatel
31. августа 2015
folder Ajax Like Dislike Article Panel
CMS PHP Fusion
22587 16 Pisatel
07. июля 2015
folder Хлебные крошки / BreadCrumbs SEO Panel
CMS PHP Fusion
26301 17 Pisatel
04. июля 2015
folder Abbr Description BBCode
CMS PHP Fusion
7675 0 Pisatel
15. июня 2015
folder Плагин Email рассылки Mail To All by Pisatel
CMS PHP Fusion
37062 32 Pisatel
26. апреля 2015
folder Подозрительный трафик и прочие страшилки
Всякая хрень
11827 2 Ditrin
23. апреля 2015
folder Мод Newsletter - рассылка писем пользователям с...
CMS PHP Fusion
31069 13 Pisatel
10. апреля 2015
folder Мод отправки писем PHPMailer для PHP-Fusion
CMS PHP Fusion
128731 113 Ditrin
06. апреля 2015
folder Появление неизвестного файла subscriptions.php
CMS PHP Fusion
8857 2 Pisatel
06. апреля 2015
folder Autoban on IP
CMS PHP Fusion
23212 13 Pisatel
03. апреля 2015