glob()绝对文件路径返回没有结果

时间:2014-01-13 18:36:57

标签: php glob

我使用glob()来检索与规则匹配的大量照片。该页面位于/stocklist/222/page.php.,照片位于/stocklist/photo/

我尝试过使用下面的代码,但似乎没有返回任何结果。

$photo = glob("/photo/".$row['Scientific']."?.jpg");

我感觉它正在寻找stocklist/222/photo

编辑:

以下建议(@Niels Keurentjes,@ Gasim),香港专业教育学院使用

echo getcwd() ;
$photo = (glob('/var/www/web/stocklist/photo/'.$row['Scientific'].'*.jpg'));
print_r(glob('/var/www/web/stocklist/photo/'.$row['Scientific'].'*.jpg'));

产生以下内容:

/var/www/web/stocklist

Array ( [0] => /var/www/web/stocklist/photo/Pituophis deppei jani.jpg 
[1] => /var/www/web/stocklist/photo/Pituophis deppei jani1.jpg )

但是图像显示为丢失的文件。

1 个答案:

答案 0 :(得分:1)

您的解决方案可能是:

$photo = "../photo/" . $row['Scientific'] . ".jpg";

glob()返回的数组不是字符串。

尝试执行以下操作以了解glob正在做的更多内容:

print_r(glob("../photo/".$row['Scientific']."/*"));

因此,您将拥有一个包含给定文件夹中所有.jpg个文件的数组,例如:

Array
(
    [0] => /stocklist/222/photo/1.jpg
    [1] => /stocklist/222/photo/2.jpg
    [2] => /stocklist/222/photo/3.jpg
    [3] => /stocklist/222/photo/4.jpg
    [4] => /stocklist/222/photo/5.jpg
    [5] => /stocklist/222/photo/6.jpg
    [6] => /stocklist/222/photo/7.jpg  
)

编辑1:

如果你的例子是正确的,你可以使用以下方式访问阵列中的第一张照片:

$photo[0];

编辑2:

您的代码中的另一个问题是,您使用?作为通配符运算符但却无法识别,应该替换为*

编辑3:

根据你的上一次更新,你的文件名中有空格 - 这是一个不好的做法,从我的角度来看,你应该修复它!

编辑4:

示例,我将如何进一步使用它,而不是使用for循环:

$photos = glob('/var/www/web/stocklist/photo/'.$row['Scientific'].'*.jpg');

if (!empty($photos))
  {
    echo "<ul id='slide'>";
    foreach ($photos as $photo)
      {
        echo "<li><img src='" . $photo . "' alt='' class='img-right'></li>";
      }
    echo "</ul>";

  }



根据PHP: glob - Manual

说明

  

glob()函数根据libc glob()函数使用的规则搜索匹配模式的所有路径名,这类似于常见shell使用的规则。

返回值:

  

返回包含匹配文件/目录的数组,如果没有文件匹配则返回空数组,如果错误则返回FALSE。