У меня есть небольшая проблема для отображения фотографий по диапазону из папки.
Мой текущий код PHP:
$start = 0007;
$end = 0015;
$filenames = glob("$dirname/*{" . implode(",", range($start, $end)) . "}*", GLOB_BRACE);
foreach ($filenames as $filename)
{
$tempo=explode('/',$filename);
echo "<div class=\"col-lg-3 col-md4 col-xs-6 thumb\">";
echo "<a class=\"thumbnail\" href=\"$softname?photo:$tour:$ordre:::$tempo[4]:$clients_id::::$argconcours\">";
echo "<p align=\"center\">$tempo[3]/$tempo[4]</p>";
echo "<img class=\"img-responsive\" src=\"$filename\" alt=\"$filename\">";
echo "</a>";
echo "</div>";
}
Он отображает фотографии 0008.jpg, 0018.jpg 0028.jpg... 0080.jpg 0009.jpg, 0019.jpg... 0089.jpg, 0011.jpg, 0012.jpg, 0013.jpg, 0014.jpg, 0015.jpg,
Похоже, он отображает все фотографии, где он находит номер 8 или 9, затем делает 11,12,13,14,15. Я не вижу, что я делаю неправильно, потому что он отображается только с 0007 до 0015.
Пример фотографии: W32_0008.JPG
Вы должны добавить "конец" в свое выражение, чтобы вы могли реализовать функцию "range": (например, только при поиске.jpg)
glob("$dirname/*0{" . implode(",", range($start, $end)) . "}.jpg", GLOB_BRACE);
это будет только поиск файлов, когда в диапазоне есть ноль в начале!
Числовые значения, начинающиеся с 0
как 0007
и 0015
, рассматриваются как восьмеричные числа.
0007
(восьмеричный 7
) будет равен десятичному значению 7
но 0015
(восьмеричный 15
) будет равен десятичному значению 13
Я бы предположил, что ваша проблема не будет проблемой, если вы определите их как строковые значения:
$start = '0007';
$end = '0015';
РЕДАКТИРОВАТЬ
Я также подозреваю, что вы должны использовать оператор диапазона ..
в своем выражении glob, а не в запятую список чисел (предполагая, что PHP glob wrapper поддерживает все функции glob)
glob("$dirname/*{" . $start . '..' . $end . "}.jpg", GLOB_BRACE);
У меня была идея PHP-кода, и, похоже, она решила мою проблему. Я думаю, это может быть грязный код. Я открыт для совета или лучшего способа сделать это.
while ($start <= $end) {
$start = sprintf('%04d', $start);
$end = sprintf('%04d', $end);
$filenames = glob("$dirname/*" . $start . ".JPG", GLOB_NOSORT);
foreach ($filenames as $filename)
{
$tempo=explode('/',$filename);
echo "<div class=\"col-lg-3 col-md4 col-xs-6 thumb\">";
echo "<a class=\"thumbnail\" href=\"$softname?photo:$tour:$ordre:::$tempo[4]:$clients_id::::$argconcours\">";
echo "<p align=\"center\">$tempo[3]/$tempo[4]</p>";
echo "<img class=\"img-responsive\" src=\"$filename\" alt=\"$filename\">";
echo "</a>";
echo "</div>";
}
$start++;
}