【问题标题】:Using glob to dynamically display images with different extensions not working in PHP使用 glob 动态显示具有不同扩展名的图像在 PHP 中不起作用
【发布时间】:2015-08-22 03:12:03
【问题描述】:

我在这里的第一个问题... 我正在尝试从“fotorama”div 内的文件夹中动态显示图像。使用此代码:

<?php
$dir = "/example/images/category/";
$images = glob($dir.'*.{JPG,jpg,gif,png,bmp}', GLOB_BRACE);
foreach ($images as $image) {
echo "<img src='".$dir.".".$image."' />";
};?>

我知道以前有人问过这个问题;但在阅读了我发现的所有内容后:例如(hereherehere)以及许多其他“类似”问题。 他们都推荐几乎相同的代码(彼此之间的语法略有不同) 我已经尝试了我找到的这段代码的所有变体,但它什么也没显示。

我知道 ($dir) 很好,因为当我尝试时: echo '&lt;img src="'.$dir."img1.jpg".'"&gt;'; 它显示该特定图像。问题一定出在 glob 部分,因为当我在 foreach 循环之前使用 var_dump($images); 时,它会显示:array (0) {}。

不知道是什么问题……

编辑: 在 Sam 的回答的帮助下,代码现在可以工作了,我发现我忘记更正 GLOB_BRACE 部分中的某些内容。更正后的代码应该是这样的:

<?php
$dir = "c:/xampp/htdocs/example/images/category/";
$images = glob($dir.'*.{JPG,jpg,gif,png,bmp}', GLOB_BRACE);
foreach ($images as $image) {
echo "<img src='".$image."' />";
};
?>

为了将来参考 Xampp localhost 上 glob()function 工作的路径是:C:/xampp/htdocs/your-folder-structure

【问题讨论】:

  • 具体目录是什么?因为/example 将是文件系统的绝对路径,而不是相对于 docroot 的路径。启用 error_reporting。
  • 哦,我忘了说我在 Xampp 上,路径只是 htdocs/example/images/category。我不知道如何启用error_reporting...'我会开始寻找正确的知道。
  • 您只需要确保您的路径可以从当前工作目录访问。如果glob() 找不到,则返回一个空数组(无论文件扩展名模式如何)。
  • 好吧,那个小代码在“example”文件夹内的“gallery.php”上,我对PHP很陌生,但我认为可以从那里访问路径。 (我也尝试过/images/category/)....我猜error_reporting已启用,(或者我认为)因为在许多尝试中它确实显示了不同的错误。其中许多与 foreach 循环的 echo 部分有关。

标签: php image foreach glob


【解决方案1】:

glob() 查找文件系统路径,而 image 标记的 src 属性指向 url 位置,可能相对于您的 docroot(但可能在任何位置,具体取决于您的路由规则)。

因此,例如,如果 /example/images/ url 指向文件系统上的 /var/www/example/images/,您会想要这样做:

<?php
$dir = "/var/www/example/images/category/";
$url = "/example/images/category/";
$images = glob($dir.'*.{JPG,jpg,gif,png,bmp}', GLOB_BRACE);
foreach ($images as $image) {
    echo "<img src='{$url}{$image}' />";
};?>

不过,在您的具体情况下,您需要确定该目录在文件系统上的位置。

【讨论】:

  • 嗨,山姆!我解决了一些问题,您的回答是正确的!我有一个相关的问题:var_dump($images); 现在抛出一个这样的数组:array(3) { [0]=&gt; string(53) "c:/xampp/htdocs/example/images/category/img1.jpg" [1]=&gt; string(53) "c:/xampp/htdocs/example/images/category/img2.jpg" } 这个&lt;img src='".$image."' /&gt; 呼应这个&lt;img src='c:/xampp/htdocs/example/images/category/img1.jpg' /&gt; 图像无法显示,因为它必须类似于&lt;img src='file:///c:. 虽然我知道这一点在我想使用您使用的 $url 部分的服务器上应该不是问题。
  • 很抱歉打扰您...您能帮我澄清一下上面的评论吗?
  • Glob 为您提供绝对路径,因此如果您想在本地访问图像,只需设置 $url = "file:///";。如果您想通过网络服务器访问它们,您仍然需要确定提供图像的 URL。
  • 谢谢,我所做的是:foreach ($images as $image) { $imagename = basename($image); echo '&lt;img src="'.$url.''.$imagename.'" /&gt;
  • 最好用该解决方案更新您的问题,以便其他人从中受益。 :)
猜你喜欢
  • 2015-11-15
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
  • 2010-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多