0

我正在尝试让网页显示图像,但它似乎不起作用。

这是代码:

    <?php
$files = glob("images/*.*");
for ($i=1; $i<count($files); $i++)
{
    $num = $files[$i];
    echo '<img src="'.$num.'" alt="random image">'."&nbsp;&nbsp;";
    }
?>

如果代码应该工作,我把它放在哪里?如果没有,有没有更好的方法来做到这一点?

4

4 回答 4

3

您需要将此代码放在包含名为“images”的目录的目录中。名为“images”的目录还需要具有*.*名称格式的文件。肯定有更好的方法来做你想做的事情。这将使用包含您要显示的所有图像的数据库。

如果这不适合您想要做的事情,那么您必须更具描述性。我不知道你想做什么,我从你展示给我们的代码中得到的只是将名为“images”的目录中的每个文件渲染为图像。

但是,如果这篇文章的这一点只是简单地问“我如何执行 PHP?”,请做一些搜索,不要用这样的问题来打扰我们。

@zerkms 注意到的另一件事是您的for ..循环从迭代 1 ( $i = 1) 开始。这意味着将跳过数组中的结果。

for ($i = 0; $i < count($files); $i++) {
于 2012-10-29T01:32:20.937 回答
1

此代码片段遍历目录 images/ 中的文件,并回显其包含在<img>标签中的文件名。你不会把它放在你想要图像的地方吗?

于 2012-10-29T01:32:40.647 回答
1

这将进入您列出图像的文件夹images.php的父目录中的 PHP 文件(例如) 。images您还可以使用以下语法简化循环(并更正它,因为数组索引应该从 开始0,而不是):1

<?php
foreach (glob("images/*.*") as $file){
    echo '<img src="'.$file.'" alt="random image">&nbsp;&nbsp;';
}
?>
于 2012-10-29T01:36:39.600 回答
0
/**
* Lists images in any folder as long as it's inside your $_SERVER["DOCUMENT_ROOT"].
* If it's outside, it's not accessible.
* Returns false and warning or array() like this:
* 
* <code>
* array('/relative/image/path' => '/absolute/image/path');
* </code>
* 
* @param string $Path
* @return array/bool
*/
function ListImageAnywhere($Path){
    // $Path must be a string.
    if(!is_string($Path) or !strlen($Path = trim($Path))){
        trigger_error('$Path must be a non-empty trimmed string.', E_USER_WARNING);
        return false;
    }
    // If $Path is file but not folder, get the dirname().
    if(is_file($Path) and !is_dir($Path)){
        $Path = dirname($Path);
    }
    // $Path must be a folder.
    if(!is_dir($Path)){
        trigger_error('$Path folder does not exist.', E_USER_WARNING);
        return false;
    }
    // Get the Real path to make sure they are Parent and Child.
    $Path = realpath($Path);
    $DocumentRoot = realpath($_SERVER['DOCUMENT_ROOT']);
    // $Path must be inside $DocumentRoot to make your images accessible.
    if(strpos($Path, $DocumentRoot) !== 0){
        trigger_error('$Path folder does not reside in $_SERVER["DOCUMENT_ROOT"].', E_USER_WARNING);
        return false;
    }
    // Get the Relative URI of the $Path base like: /image
    $RelativePath = substr($Path, strlen($DocumentRoot));
    if(empty($RelativePath)){
        // If empty $DocumentRoot ===  $Path so / will suffice
        $RelativePath = DIRECTORY_SEPARATOR;
    }
    // Make sure path starts with / to avoid partial comparison of non-suffixed folder names
    if($RelativePath{0} != DIRECTORY_SEPARATOR){
        trigger_error('$Path folder does not reside in $_SERVER["DOCUMENT_ROOT"].', E_USER_WARNING);
        return false;
    }
    // replace \ with / in relative URI (Windows)
    $RelativePath = str_replace('\\', '/', $RelativePath);
    // List files in folder
    $Files = glob($Path . DIRECTORY_SEPARATOR . '*.*');
    // Keep images (change as you wish)
    $Files = preg_grep('~\\.(jpe?g|png|gif)$~i', $Files);
    // Make sure these are files and not folders named like images
    $Files = array_filter($Files, 'is_file');
    // No images found?!
    if(empty($Files)){
        return array(); // Empty array() is still a success
    }
    // Prepare images container
    $Images = array();
    // Loop paths and build Relative URIs
    foreach($Files as $File){
        $Images[$RelativePath.'/'.basename($File)] = $File;
    }
    // Done :)
    return $Images; // Easy-peasy, general solution!
}

// SAMPLE CODE COMES HERE
// If we have images...
if($Images = ListImageAnywhere(__FILE__)){ // <- works with __DIR__ or __FILE__
    // ... loop them...
    foreach($Images as $Relative => $Absolute){
        // ... and print IMG tags.
        echo '<img src="', $Relative, '" >', PHP_EOL;
    }
}elseif($Images === false){
    // Error
}else{
    // No error but no images
}

试穿这个尺寸。评论是不言自明的。

于 2012-10-29T02:02:37.327 回答