如何将目录中的图像和文件回显到页面上 php

How to echo images and files within a directory onto a page php

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

image.png

mobile.html

text.txt

image2.jpg


如何才能使目录中的文件是图像时显示为图像而不是文本。例如,页面将回显:


example.html

test.php


(来源:treehugger.com

mobile.html

text.txt


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

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

<?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

试试这个:

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);
}

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

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