如何使用php扫描目录并仅将图像文件名保存到数组?

时间:2013-12-20 21:22:43

标签: php arrays glob

我正在编写一个扫描特定目录并将每个图像文件名保存到数组的脚本。问题是,我在目录中也有两个txt文件。我只想要数组中的图像文件名,我需要排除txt文件。因此,我不能使用scandir。以下是我到目前为止的情况:

$images = glob($post_dir . "{*.jpg}", GLOB_BRACE);
$listImages=array();
foreach($images as $image){
    $listImages[]=$image;
}

foreach ($listImages as $singleImg) {
    echo $singleImg;
}

我认为问题可能实际上是设置$ images变量。在第一个foreach中,如果echo $image;我没有得到任何回报。

编辑:此外,如果有更好的方法来完成我想要完成的任务,请随时分享。我没有设置只使用glob。

2 个答案:

答案 0 :(得分:0)

我认为glob可以做到:

$post_dir = 'giraffe-images/';
$images = glob($post_dir . '*.jpg');
foreach($images as $image){
  echo $image;
}

至于你的情况,$listImages不是第一个foreach循环之后的数组,因为你正在做:

$listImages = $image;

我认为你的意思是:

$listImages[] = $image;

答案 1 :(得分:0)

我想添加echo $post_dir;可以让你有一个斜杠,并且你有正确的目录。

我写了这个测试:

<?php
$post_dir = "/tmp/20712147/subdir/";
$images = glob($post_dir . "*.jpg");
$listImages=array();
foreach($images as $image){
    $listImages[]=$image;
}

print_r($listImages);

用法:

matt@goliath:/tmp/20712147$ ls
glob.php subdir
matt@goliath:/tmp/20712147$ ls subdir/
readme.txt test1.jpg  test2.jpg
matt@goliath:/tmp/20712147$ php glob.php 
Array
(
    [0] => /tmp/20712147/subdir/test1.jpg
    [1] => /tmp/20712147/subdir/test2.jpg
)