【问题标题】:How to echo images and files within a directory onto a page php如何将目录中的图像和文件回显到页面php
【发布时间】:2015-03-22 19:28:34
【问题描述】:
if ($handle = opendir('.')) {

    while (false !== ($entry = readdir($handle))) {

        if ($entry != "." && $entry != ".." && !in_array($entry, $blacklist)) {
            echo "<p>$entry\n</p>";
        } 


    }

    closedir($handle);
}

上面是我用来回显目录中所有文件的 PHP 代码。它工作正常,但页面呼应了这一点:

example.html

test.php

图像.png

mobile.html

文本.txt

image2.jpg


如果目录中的文件是图像,我该如何做到这一点,它会显示为图像而不是文本。例如,页面会回显:


example.html

test.php


(来源:treehugger.com

mobile.html

文本.txt


简而言之,我当前使用的代码只显示目录中每个文件的名称。我希望它显示目录中每个文件的名称,但是,如果目录中有图像,它不会回显图像的文件名,而是显示图像。

【问题讨论】:

  • 欢迎来到 Stack Overflow!这个问题信息量有点少。你能分享一下你尝试过的,你遇到了什么问题吗?

标签: php file directory echo


【解决方案1】:

如果您只想获取图像,这应该适合您:

<?php

    foreach(glob("*.{jpg,png,gif,jpeg}", GLOB_BRACE) as $image)
        echo "<img src='" . $image . "' />";

?>

(注意文件扩展名之间没有空格,否则将无法正常工作)

如果你想要所有文件,只需使用这个:

foreach(glob("*.*") as $file) {

    if(in_array(pathinfo($file, PATHINFO_EXTENSION), array("jpg", "png", "jpeg", "gif")))
        echo "<img src='" . $file . "' />";
    else
        echo $file . "<br />";
}

有关glob()的更多信息,请参阅手册:http://php.net/manual/en/function.glob.php

【讨论】:

  • @Osman 不客气!顺便说一句:将 glob 与 *.* 一起使用会有一个很好的副作用,你不会得到 ... :D
【解决方案2】:

试试这个:

if ($handle = opendir('.')) {

    $valid_image = array("jpg", "jpeg", "png", "gif");

    while (false !== ($entry = readdir($handle))) {

        if ($entry != "." && $entry != ".." && !in_array($entry, $blacklist)) {

            $exploded = explode('.', $entry);

            if(in_array(end($exploded), $valid_image))
            {
                 echo '<img src="'.$entry.'">';
            }
            else
            {
                echo "<p>$entry\n</p>";
            }
        } 
    }
    closedir($handle);
}

注意发布有效的图像路径,例如:

echo '<img src="http://example.com/images/'.$entry.'">';

【讨论】:

    猜你喜欢
    • 2013-04-29
    • 2023-04-02
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 2012-07-03
    • 2011-04-30
    • 1970-01-01
    相关资源
    最近更新 更多