【问题标题】:Pull Images from directory - PHP从目录中提取图像 - PHP
【发布时间】:2012-02-07 01:05:42
【问题描述】:

我正在尝试简单地从我的目录 /img 中提取图像,然后按照以下方式将它们动态加载到网站中。

            <img src="plates/photo1.jpg">

就是这样。看起来很简单,但是我找到的所有代码基本上都行不通。

我想要做的事情是这样的:

   <?php
   $a=array();
   if ($handle = opendir('plates')) {
while (false !== ($file = readdir($handle))) {
   if(preg_match("/\.png$/", $file)) 
        $a[]=$file;
else if(preg_match("/\.jpg$/", $file)) 
        $a[]=$file;
else if(preg_match("/\.jpeg$/", $file)) 
        $a[]=$file;

}
closedir($handle);
   }

 foreach($a as $i){
echo "<img src='".$i."' />";
 }
 ?>

【问题讨论】:

  • 定义“不起作用”。有错误吗?代码返回什么?如果你调试它,观察到的行为在什么时候偏离了预期的行为?发生这种情况时相关的运行时值是什么?
  • “它不起作用”太模糊了。你有错误吗?如果是,请描述一下?否则会发生什么意想不到的事情?
  • 只匹配文件扩展名的正则表达式是非常低效的。但是,如果您坚持,您至少应该组合这三种文件类型。
  • 它什么也没显示。没有错误。什么都不显示。目录中有一张图片。

标签: php image directory


【解决方案1】:

这可以使用glob() 轻松完成。

$files = glob("plates/*.{png,jpg,jpeg}", GLOB_BRACE);
foreach ($files as $file)
    print "<img src=\"plates/$file\" />";

【讨论】:

  • 工作正常,只需将打印行替换为:echo '&lt;img src="' . $file . '"';
【解决方案2】:

您希望您的来源显示为plates/photo1.jpg,但是当您使用echo "&lt;img src='".$i."' /&gt;"; 时,您只是在写入文件名。尝试将其更改为:

<?php
$a = array();
$dir = 'plates';
if ($handle = opendir($dir)) {
  while (false !== ($file = readdir($handle))) {
    if (preg_match("/\.png$/", $file)) $a[] = $file;
    elseif (preg_match("/\.jpg$/", $file)) $a[] = $file;
    elseif (preg_match("/\.jpeg$/", $file)) $a[] = $file;
  }
  closedir($handle);
}
foreach ($a as $i) {
  echo "<img src='" . $dir . '/' . $i . "' />";
}
?>

【讨论】:

    【解决方案3】:

    您应该使用Glob 而不是 opendir/closedir。这要简单得多。

    我不确定您要做什么,但这可能会让您走上正轨

    <?php
    foreach (glob("/plates/*") as $filename) {
    
        $path_parts = pathinfo($filename);
    
        if($path_parts['extension'] == "png") {
            // do something
        } elseif($path_parts['extension'] == "jpg") {
            // do something else
        }
    }
    ?>
    

    【讨论】:

    • glob 更好,但 DirectoryIterator 再次更好
    • 直到现在我才听说过。看起来不错。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    • 1970-01-01
    • 2017-12-08
    • 2012-10-21
    • 1970-01-01
    • 2012-03-25
    • 2012-03-26
    相关资源
    最近更新 更多