2009-08-01 3 views
4

Я хочу просто вытащить все файлы JPG из определенной папки (на MY-сервере) в массив. Я полагаю, что это будет выглядеть примерно так. Моя логика здесь заключается в том, что у меня будет папка с изображениями, которые я хочу в галерее, чтобы я мог просто загружать изображения с FTP, и они просто появлялись. Это хорошая идея?Вытащить все jpg из папки в массив PHP?

$dir = 'www.example.com/folder1/'; 

$images_array = SOMEFUNCTION($dir); 

foreach ($images_array) as $v){ 
echo '<img src="'.$dir.$v.'" />"; 
} 

Спасибо за помощь!

ответ

11

glob() будет хорошо работать здесь:

$images_array = glob($dir.'*.jpg'); 

Как прокомментировал Zarel, вы должны были бы сделать замену строки на файлы в списке, как glob() будет укажите путь к файлу в системе, который не будет прямым URL-адресом. Отключите префикс каталога и замените его префиксом URL, используя str_replace(), когда вы выводите ссылки.

+1

Имейте в виду, что вам необходимо использовать относительные пути или внутренние пути ... '$ dir = 'www.example.com/anything'' не будет работать. – Zarel

+0

не забудьте указать urlencode и htmlentities – hanshenrik

0

Я знаю, что это старый вопрос, но ниже мое решение.

Что необходимо? Сценарий и папка с изображениями. Скрипт и папка с изображениями могут быть размещены в любом месте вашего сервера. Но папка с изображениями должна называться «изображения» (множественное слово) и должна находиться в той же папке, что и скрипт на сервере.

Я предпочитаю использовать DirectoryIterator через glob(), потому что glob($dir."\*.jpg") возвращает абсолютный путь. То, что вам нужно для вывода изображения, - это URL-адрес на сервере. Поэтому, если вы хотите использовать функцию glob(), вам нужно будет преобразовать абсолютный путь в URL.

function get_image_array($path = NULL, $protocol = "http://", $image_folder = "images") { 

    $dir = new DirectoryIterator($path); 

    $realpath = array(); 
    foreach ($dir as $fileinfo) { 
     if ($fileinfo->isDot()) { 
      continue; 
     } 

     $folder_name = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; // gets the name of folder, in this case: "images" 
     $file_name  = $fileinfo->getFilename();    // gets the name of the image 
     $realpath[] = $protocol . $folder_name . $image_folder . "/" . $file_name;  // put foldername and filename together 
    } 

    return $realpath; 
} 

$path = dirname(__FILE__) . "\images";  // path to image folder 
$image_array_path = get_image_array($path); // invoke the get_image_array function 

// Simple way to output images, for the sake of example 
foreach ($image_array_path as $image_path) { 

    echo "<img src=\"{$image_path}\"></img><br>"; 
} 
Смежные вопросы