我怎样才能让 PHP 内联显示图片

how can i make PHP to display pictures inline

我需要帮助以内嵌方式显示文件夹中的所有图片,而不是相互重叠。

<?php

$files = glob("bilder/*.*");

for ($i=1; $i<count($files); $i++)    
{

    $image = $files[$i];
    $supported_file = array(
                            'gif',
                            'jpg',
                            'jpeg',
                             'png'
                           );

    $ext = strtolower(pathinfo($image, PATHINFO_EXTENSION));
    if (in_array($ext, $supported_file)) {
        echo '<img src="'.$image .'" width="400" height="500" />'."<br /><br />";
    } else {
        continue;
    }
}
?>

您应该使用 css 类 和样式。

echo '<img src="'.$image .'" class="someClass" />';

然后将您的样式表包含在 html head

<link rel="stylesheet" href="stylesheet.css">

最后在 stylesheet.css

中设置您的图像样式
.someClass{
    display: inline-block;
    padding: 3px;
}

所有这些都是最基本的 html 和 css 东西。请考虑在提问之前阅读一些教程。

没有任何其他 HTML,图像默认内联显示。但是你用 "<br /><br />" 添加的中断使这种行为无效,并使图像换行到一列中。

所以只需删除那些中断。如果您关心的是包装 HTML 代码本身,则插入换行符 (\n)。

我借此机会强调您的 PHP 代码中可以改进的某些方面:

  • 当那是循环的最后一条语句时,执行 continue; 是没有用的。你可以把 else 块放在外面;
  • PHP 有一个很好的循环数组结构,即 foreach。使代码更紧凑的同时提高了可读性;
  • 您在循环的每次迭代中将变量 $supported_file 初始化为相同的值:这应该发生在循环之外;
  • 要过滤文件名数组,可以使用preg_grep;
  • 因为 HTML 支持单引号作为值分隔符,而 PHP 将在双引号中扩展变量名,你(在我看来)通过切换使用 double/single 得到更好的代码引号。

此代码的清理结果:

$files = preg_grep('/^.*\.gif|jpg|jpeg|png$/i', glob("bilder/*.*"));
foreach ($files as $image) {
    echo "<img src='$image' width='400' height='500'/>\n";
}

关于应用于图像的 HTML 属性 widthheight

这确实是要避免的事情。您应该改为使用这些图像的正确尺寸,因为图像可能会因强加尺寸而变得丑陋。如果它们是您的图像,则使这些图像具有合适的尺寸。我在上面的代码中保留了这些属性,但请重新考虑你如何处理图像大小。

我还注意到您在 pastebin.com 上分享的 HTML 中的一个问题:

  • titlemeta 标签应该移到 head 标签中,它们不应作为 html 标签的直接子标签出现。
  • 另请注意,您通过 body 标签加载了背景图片。我希望您没有误解,因为该图像肯定会与您制作的其他 img 标签重叠。