Офис НП AMWAY в Ярославле
→ На карте Купить AMWAY в ЯрославлеПриобрести высококачественную продукцию Амвей в Ярославле, получить консультации по бизнесу, заказать продукцию или получить заказ:
●Адрес: улица Валентины Терешковой, дом 1 (Вход со двора)
●Телефон: +7 (920) 112-00-91
●Email: matyxho@mail.ru
●Сайт: https://www.amway.ru/user/lebedem
●Визитка: http://yar.meweb.ru
Иерархия статей
Статьи » Программирование » PHP: Вывод изображений из папки (директории)
Сниппет
При создании одного из плагинов понадобилось мне показать все изображения из указанной папки (директории). Признаться, раньше я не работал с подобным, но все новое всегда вызывает азарт. Поэтому, чуть погуглив и покурив мануалы, я набросал несколько строк кода, коими и поделюсь с вами.
PHP: Вывод изображений из папки (директории)
В данной статье приведу небольшой скрипт, который ищет изображения в указанной папке (директории) и выводит их. Для начала — вывод всех изображений из папки (как всегда- комментарии прямо в коде):
Однако, задачи бывают разные. Попробую привести несколько примеров. Например, нам необходимо вывести не все изображения, а только первые 10. Для этого нужно будет лишь задать дополнительное условие при проходе по массиву. Итак, код с комментариями:
Следующий пример — выберем, например, каждое второе изображение:
Ну и на закуску — выберем 5 случайных (рандомных) изображений из папки (каталога). Для этого я воспользуюсь php–функцией array_rand();, и код придется чуть усложнить, увеличив буквально на пару строк:
Если кто–то сможет сделать это более изящно — милости прошу. Я лично всегда стараюсь использовать для работы с массивами функции, которые специально предназначены для работы с ними и не изобретать велосипедов.
На этом, в общем, и закончу. Удачи в кодинге и процветания твоему проекту!
Код: 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++;
}
Если кто–то сможет сделать это более изящно — милости прошу. Я лично всегда стараюсь использовать для работы с массивами функции, которые специально предназначены для работы с ними и не изобретать велосипедов.
На этом, в общем, и закончу. Удачи в кодинге и процветания твоему проекту!
Понравилась статья?
Метки для данной статьи
Похожие статьи
Поделиться:
Последние активные темы форума
Темы | Просмотров | Ответов | Последние сообщения | |
Вопрос по переделке bb-кода PHP, MySQL |
22367 | 5 | Pisatel 26. мая 2017 |
|
Вопросы по Ajax форме обратной связи CMS PHP Fusion |
68743 | 48 | Ditrin 19. февраля 2017 |
|
BBCode YouTube Video Colorbox mod CMS PHP Fusion |
15389 | 2 | Pisatel 10. декабря 2016 |
|
Как лучше создать собственную страницу? CMS PHP Fusion |
17926 | 17 | Pisatel 11. мая 2016 |
|
Небольшие вопросы по скриптам магазина и катало... PHP, MySQL |
145212 | 80 | Pisatel 11. января 2016 |
|
BBCode Code mod CMS PHP Fusion |
14440 | 0 | Pisatel 31. августа 2015 |
|
Ajax Like Dislike Article Panel CMS PHP Fusion |
22590 | 16 | Pisatel 07. июля 2015 |
|
Хлебные крошки / BreadCrumbs SEO Panel CMS PHP Fusion |
26302 | 17 | Pisatel 04. июля 2015 |
|
Abbr Description BBCode CMS PHP Fusion |
7676 | 0 | Pisatel 15. июня 2015 |
|
Плагин Email рассылки Mail To All by Pisatel CMS PHP Fusion |
37063 | 32 | Pisatel 26. апреля 2015 |
|
Подозрительный трафик и прочие страшилки Всякая хрень |
11827 | 2 | Ditrin 23. апреля 2015 |
|
Мод Newsletter - рассылка писем пользователям с... CMS PHP Fusion |
31070 | 13 | Pisatel 10. апреля 2015 |
|
Мод отправки писем PHPMailer для PHP-Fusion CMS PHP Fusion |
128778 | 113 | Ditrin 06. апреля 2015 |
|
Появление неизвестного файла subscriptions.php CMS PHP Fusion |
8857 | 2 | Pisatel 06. апреля 2015 |
|
Autoban on IP CMS PHP Fusion |
23222 | 13 | Pisatel 03. апреля 2015 |