列出目录中的文件并构建html

时间:2011-02-15 07:47:37

标签: php

我正在制作一个包含一些Flash游戏的页面,但是,由于过去会有很多游戏,所以在网站上逐一添加所有这些游戏将会非常无聊。我知道使用PHP我们可以获取目录中的文件列表,我知道,使用这种方法,我可以将目录中的所有游戏显示给访问者页面但是,我在想是否可以帮助我添加每个游戏的图像,与游戏名称相对应。例如:

在“games”文件夹中我们将有游戏:play1.swf,play2.swf,play3.swf 并且,在“images”目录中,我们将有图像:play1.jpg,play2.jpg,play3.jpg。

要显示游戏列表,我们可以将jpg文件与swf文件组合在一起吗? Play1.jpg将是play1.swf游戏的图像,当访问者点击图像时,将重定向到名为ex:playgames.php?play1

的页面

2 个答案:

答案 0 :(得分:0)

假设这个目录结构:

/foo/images
     game1.jpg
     game2.jpg
/foo/games
     game1.swf
     game2.swf

这样的事情:

<?php

$dir = "/foo";
$files = new DirectoryIterator($dir . DIRECTORY_SEPARATOR . 'games');
$games = array();

foreach($files as $file){

    if (!$file->isDot()) {
        $potential_image_location = $file->getPath() . '/../images/' . $file->getBasename('.swf') . '.jpg';

        if (file_exists($potential_image_location)) {
            $games[$file->getBaseName()] = array(
                'game_path' => $file->getPathname(),
                'image_path' => realpath($potential_image_location),
            );
        }
    }
}

if (!count($games)) {
   die("Sorry, couldn't find any game / image combos");
}
?>
<table>
<?php
foreach ($games as $game_name => $info) {
  echo '<tr><td><img src="' . htmlentities($info['image_path']) . '" alt="' . htmlentities($game_name) . '"></td>' . PHP_EOL;
  echo '<td>' . $info['game_path'] . '</td></tr>';
}
?>

</table>

答案 1 :(得分:-1)

关于以聪明的方式使用opendir的全部内容,以及其中的文档http://php.net/manual/en/function.opendir.php