|
|
|
| Ответ 002 на задачу N 10.
С условиями задачи можно ознакомится по ссылке.
<html>
<body>
<?php
//Лично я не очень люблю встраивать переменные прямо в строку,
//т.к. это очень сильно понижает читаемость кода.
$table_cols = "4"; //Число столбцов
$images_ext = "jpg|jpeg|gif|png|bmp"; //Список разрешённый расширений, отделённых друг от друга "|"
$cat = "img/"; //Имя папки с картинками, со слешем после названия.
//Если изображения лежат в той же папке что и данный скрипт, оставте строку пустой
//Проверяем верно ли указан каталог
if (is_dir("./".$cat))
{#1
if (file_exists("./".$cat."descript.ion"))
//Получаем массив строк
$images_array = file("./".$cat."descript.ion");
//Если файла с описанием нет, то ни один цикл не выполнится
//Обрабатываем массив строк в цикле
$images_count = count($images_array);
for ($k=0; $k<$images_count; $k++)
{#2
//Разделяем нужную строку на составляющие, для получения имени файла и описание
$record = explode(" ", $images_array[$k]);
//Убираем лишние пробелы от имени файла
$file_name = trim($record[0]);
//Если файл существуем, то выполняем необходимые действия
if (file_exists("./".$cat.$file_name))
{#3
//Проверяем расширение файла
if (preg_match("/(.*)\.(".$images_ext.")/i", $file_name))
{#4
//Стираем строку с описанием
$desc_str = "";
//Добавляем новое имя файла в массив
$img_array[] = $file_name;
//Склеиваем описание, т.к. оно могло разбиться при вызове explode
$record_count = count($record);
for ($g=1; $g<$record_count; $g++)
$desc_str .= $record[$g]." ";
//Добавляем описание в массив
$desc_array[] = $desc_str;
}#4
}#3
}#2
#ВЫВОДИМ РЕЗУЛЬТАТ
print "<table border>\n";
$img_count = count($img_array);
//В цикле рисуем строки
for ($i=0; $i<$img_count; $i+=$table_cols)
{
print "<tr>";
//В цикле рисуем ячейки
for ($j=0; $j<$table_cols; $j++) if (!empty($img_array[$i+$j])) print "<td style='padding: 10px;'><img src='".trim($cat.$img_array[$i+$j])."'><br>".trim($desc_array[$i+$j])."</td>";
print "</tr>\n";
}
print "</table>\n";
}#1
?>
</body>
</html>
|
Извиняюсь за то, что высылаю скрипт второй раз. Но в прошлой версии было замечено ряд недочётов.
http://www.softtime.ru/info/task.php?id_article=80 | |
|
|
|
|
|
|
|
для: SoftTime
(28.02.2006 в 15:36)
| | Приличная читабельность и компактность, очень хорошо, что скрипт не сыплется на различиях в регистре. Скрипту можно скормить файл огромного размера, но это не критично, так как администрированием здесь занимается администратор - лицо доверенное. Очень хорошо, что скрипт позволяет указать в качестве директории с фотографиями произольную директорию. | |
|
|
|
|
|
|
|
для: SoftTime
(28.02.2006 в 15:36)
| |
descript.ion:
1.jpg Соль и пеппер
2.jpg Рыба
4.jpg Яйцо в воде
7.jpg Иммунная клетка
8.jpg Несуществующий файл
|
Вывел почему-то 4 файла, описания которых есть в файле, а остальные пропустил.
...в каждой ячейке которой будет изображение и подпись к нему (если она есть).
|
| |
|
|
|
|
|
|
|
для: Саня
(06.03.2006 в 19:42)
| | Прочитай условие, нужно вывести только файлы из перечислинных и если он вобще существует! | |
|
|
|
|
|
|
|
для: Sergey89
(06.03.2006 в 20:19)
| | Вот полное условие. Где здесь такое написано?
Имеется подкаталог, содержащий некоторое количество графических файлов (jpg/gif/bmp). В этом же подкаталоге есть файл descript.ion, содержащий описание некоторых файлов в виде:
111.jpg описание этой фото
222.gif а это просто картинка
333.bmp а этого файла нет, но описание есть
Необходимо создать скрипт index.php, который будет находиться в этом же подкаталоге и будет выводить таблицу, в каждой ячейке которой будет изображение и подпись к нему (если она есть).
|
Я понял так, что нужно выводить все картинки. Если есть подпись, то выводить и ее. Если имеется подпись к несуществующему файлу, то нужно пытвться вывести его тоже, вместе с подписью. | |
|
|
|
|
|
|
|
для: Drago
(06.03.2006 в 20:36)
| | Я думаю просто забыли написать ;) но неявно об этом напоминается. | |
|
|
|
|
|
|
|
для: Sergey89
(06.03.2006 в 21:26)
| | А помоему, явно указывается об обратном.
Написано ведь
...в каждой ячейке которой будет изображение и подпись к нему (если она есть).
|
А не
...в каждой ячейке которой будет изображение, если есть подпись к нему.
|
Как говорится, прочувствуй разницу. ;)
А вообще, было б лучше, если бы сам автор высказался. | |
|
|
|
|
|
|
|
для: Drago
(07.03.2006 в 10:01)
| | Я окончательно запуталс я =) Знаю лишь то, что мой скрипт выводит только сущетсвующие файлы и если они есть в файле описания. | |
|
|
|