на основе исходного кода в этом вопросе и исправления Tims там (ответ 1) Я пытаюсь добиться следующего:
У меня есть папка «img», содержащая изображения следующим образом:
При перемещении из папки «img» простая HTML-страница должна отображать изображения и имена файлов следующим образом:
Фактические изображения, которые содержат часть «_alternate» в их имени файла (и только они) + имя файла изображения, не содержащее часть «_alternate» (без расширения файла) под изображением в текстовом поле. Все пары должны быть вытащены в алфавитном порядке. В приведенном ниже примере жирные заглавные буквы указывают фактическое изображение, которое будет отображаться:
IMAGE_123_ALTERNATE
textbox: "image_123"
IMAGE_456_ALTERNATE
textbox: "image_456"
IMAGE_789_ALTERNATE
textbox: "image_789"
Это то, что у меня есть до сих пор, но это отображает все изображения и имена файлов:
<?php $dir = opendir("img"); while (($file = readdir($dir)) !== false) { echo "<a href='img/".$file."' target='_blank'> <img src='img/".$file."'width='200' height='200' /></a><br />"; echo "<textarea>$file</textarea><br /><br />"; } closedir($dir); ?>
Любая помощь приветствуется!
Большое спасибо!
Этот код должен отображать список всех изображений в алфавитном порядке (с использованием функции GLOB PHP).
Затем он выводит изображение HTML (приводящее к «_alternate» изображению) и имени файла изображения (без пути, «_alternate» или «extension»).
<?php foreach (glob("img/*_alternate.jpg") as $file) { $filename_parts = pathinfo($file); $filename = $filename_parts['filename']; $filename = str_replace("_alternate", "", $filename); echo "<div>"; echo "<img src=\"/$file\" width=\"200\" height=\"200\" />"; echo "<p>$filename</p>"; } ?>
Я разбил функции, которые находят новое имя файла и части, которые выводят код HTML, чтобы было легче читать и понимать, вы могли бы объединить их в одну функцию, если хотите.
Просто через оператор if в цикле while. Проверьте, содержит ли имя файла альтернативное или нет. Если он не содержит альтернативного запуска, тот же код заменяет расширение файла на «_alternate.ext», сохраняя при этом текстовую область одинаковой. Если он содержит alternalte, ничего не делайте. Таким образом, вы обрабатываете только половину файлов.
$files = new \DirectoryIterator('img'); // <- this should be the full absolute path! $images = array(); // pick up jpg images that end in 'alternate' foreach($files as $file){ $name = $file->getBasename('.jpg'); if(strripos($name, 'alternate') === (strlen($name) - 9)) $images[] = $name; } // sort them sort($images, SORT_STRING); // and do your thing here with $images... var_dump($images);