Чтение изображений из каталога с использованием PHP - PullRequest
4 голосов
/ 22 августа 2010

Я хочу выяснить, возможно ли следующее с PHP внутри WordPress.

В основном, если у меня на сайте есть каталог, называемый «промо», который состоит из 1 ко многим изображениям (так как эти изображения могут изменяться), которые я хотел бы прочитать из файла PHP в настройке карусели,то есть что-то похожее на это:

   <div class="scrollable" id="browsable">   

   <div class="items"> 

          <?php 
            $tot_images_from_promo_dir = [get_total_image_count_in_promos_dir]; 

            for ( $counter = 1; $counter <= $tot_images_from_promo_dir; $counter ++) {
                echo "<div>";
                    echo "<a href="#"><img src="[image_from_promo_directory]" /></a>
                echo "</div>";
            }
          ?>
    </div>
</div>

По сути, нужно как-то с php прочитать общее количество изображений в моем промо-каталоге, а затем использовать это общее значение в моем максимальном значении цикла и прочитать каждое имя файла изображения в промо-каталогеи перейти в мою <img src=[image_name_from_promo_dir].

Ответы [ 6 ]

12 голосов
/ 22 августа 2010

Предполагая, что все файлы в каталоге Promos являются изображениями:

<div class="scrollable" id="browsable">   
   <div class="items"> 
      <?php 
        if ($handle = opendir('./promos/')) {

            while (false !== ($file = readdir($handle))) {
                echo "<div>";
                    echo "<a href='#'><img src='".$file."' /></a>";
                echo "</div>";
            }
            closedir($handle);
        }
      ?>
    </div>
</div>

Если, однако, в каталоге есть файлы, которые не являются изображениями, вам необходимо проверить это, прежде чем показывать их. Цикл while должен измениться на что-то вроде:

while (false !== ($file = readdir($handle))) {
    if ((strpos($file, ".jpg")) || (strpos($file, ".gif"))) {
        echo "<div>";
            echo "<a href='#'><img src='".$file."' /></a>";
        echo "</div>";
    }
}
1 голос
/ 22 августа 2010

Мой способ сделать это с opendir

<div class="scrollable" id="browsable">   
<div class="items"> 

<?php
    $c=0;
    if ($handle = opendir('promo')) {
        while (false !== ($file = readdir($handle))) {
            if ($file != "." && $file != "..") {
                $images[$c] = $file;
                $c++;
            }
        }
        closedir($handle);
    }

    for ($counter = 0; $counter <= count($images); $counter ++) {
        echo "<div>";
            echo '<a href="#"><img src="'.$image[$counter].'" /></a>';
        echo "</div>";
    }
          ?>
    </div>
</div>
0 голосов
/ 19 ноября 2013

Этот код предоставит изображения из каталога под названием "imagfolder"

if($handle = opendir(dirname(realpath(__FILE__)).'/imagefolder/')){
                while($file = readdir($handle)){
                    if($file !== '.' && $file !== '..')
                    {
                        echo '<div id="images">';
                        echo '<img src="imagefolder/'.$file.'" border="0" />';
                        echo '</div>';
                    }
                }
                closedir($handle);
        }
0 голосов
/ 15 октября 2011

Я использую glob для таких операций

<div class="scrollable" id="browsable">   

   <div class="items"> 

          <?php 
            $images = glob("path_to_folder/*.{gif,jpg,png}", GLOB_BRACE);

            for ( $counter = 1; $counter < sizeof($images); $counter ++) {
                echo "<div>";
                    echo '<a href='#'><img src=".$images[$counter]." /></a>';
                echo "</div>";
            }
          ?>
    </div>
</div>
0 голосов
/ 22 августа 2010

Как насчет класса DirectoryIterator?

<div class="scrollable" id="browsable">   
    <div class="items"> 
        <?php foreach (new DirectoryIterator('folder/goes/here') as $file): ?>
        <?php if($file->isDot || !$file->isReadable()) continue; ?>

            <div><a href="#"><img src="filepath/<?php echo $file->getFilename(); ?>" /></a></div>

          <?php endforeach; ?>
    </div>
</div>
0 голосов
/ 22 августа 2010

Иди к http://www.php.net/manual/en/ref.dir.php и, в частности, посмотри на функцию скандира.Вы можете использовать что-то вроде:

$images = array();
foreach (scandir('somewhere') as $filename)
    if (is_an_image($filename)) $images[] = $filename;

Вы можете написать функцию is_an_image ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...