使用php将目录中的图像加载到数组中

时间:2014-12-14 08:05:26

标签: php wordpress image dynamic load

所以我已经杀了一整天,试图做一些能够让实际知道怎么写php不到2分钟的人。令人沮丧,但我从实践中学习并试图解决问题。

我觉得自己没有得到这个,但是8小时和数数(是的,我知道跛脚)就足够了。

有人可以告诉我这个等式有什么问题......

$dir = '../folder';

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

$values['options'] = array( '<img src="$images_array"/>');

这可能很明显,但我只需要将mysite.com/folder中的图片加载到$ values [&#39; options&#39;]数组中。

如果我只是简单地说明单个图像的路径,那么就会显示图像(显然是因为它不依赖于任何其他图像。)

感谢。

@hellcode

对于评论&#39;中的混乱感到抱歉。低于你的回复。不幸的是我无法让这个工作?也许我需要提供更多背景信息。

文件夹中的图像将用作表单中的复选框项。这是我的原始代码(不工作):

add_filter('frm_setup_new_fields_vars', 'frm_set_checked', 20, 2);
function frm_set_checked($values, $field){
  if($field->id == 187){
    $dir = '../folder';
    $images_array = glob($dir.'*.jpg');
    $values['options'] = array( '<img src="$images_array"/>');
    $values['use_key'] = true;
  }
  return $values;
}

我添加了你的代码:

add_filter('frm_setup_new_fields_vars', 'frm_set_checked', 20, 2);
function frm_set_checked($values, $field){
  if($field->id == 187){
    $dir = '../folder';
    $images_array = glob($dir.'*.jpg');
    $values['options'] = array();
    foreach($images_array as $image) {
      $values['options'][] = '<img src="'.$image.'"/>';
    }
    $values['use_key'] = true;
  }
  return $values;
}

但不幸的是,它并没有提取文件:(

2 个答案:

答案 0 :(得分:0)

尝试:

$dir = '../folder';
$images_array = glob($dir.'*.jpg');
$values['options'] = array();
foreach($images_array as $image) {
  $values['options'][] = '<img src="'.$image.'"/>';
}

答案 1 :(得分:0)

好吧,一个问题可能是glob()函数使用当前目录,除非你使用chdir()函数,否则它可以是任何东西。

肯定存在问题的一点是,您使用glob()的返回值$images_array作为字符串。因为它是一个不起作用的数组。

这是应该有用的东西。

// Allowed image formats (also known as a "whitelist")
$allowedFormats = ['jpg', 'jpeg', 'gif', 'png'];

// Array for holding any found images
$foundImages = [];

// Get the real path from the relative path
$path = realpath('../folder');
if ($path === false) {
    die('The path does not exist!');
}
// Open a folder handle
$folder = dir($path);

// Read what is in the folder
while (($item = $folder->read()) !== false) {

    // .. is the parent folder, . is the current folder
    if ($item === '..' or $item === '.') {
        continue;
    }
    // Find the last dot in the filename
    // If it was not found then not image file
    $lastDot = strrpos($item, '.');
    if ($lastDot === false) {
        continue;
    }
    // Get the filetype and make sure it is
    // an allowed format
    $filetype = substr($item, $lastDot);
    if ( ! in_array($filetype, $allowedFormats)) {
        continue;
    }
    // Okay, looks like an image!
    $foundImages[] = $item;
}
// Close the folder handle
$folder->close();