Php 在文件名旁边添加图标

Php 在文件名旁边添加图标,php,html,Php,Html,我有以下代码对其当前目录中的文件进行排序: <?php $folders = array_filter(glob('*'), 'is_dir'); foreach ($folders as $foldlist) { echo "<tr><td><img src=\"/index/RESSOURCES/icon/folder.png\"></td><td><a href=\"{$foldlist}\">{$foldl

我有以下代码对其当前目录中的文件进行排序:

<?php
$folders = array_filter(glob('*'), 'is_dir');

foreach ($folders as $foldlist) {

echo "<tr><td><img src=\"/index/RESSOURCES/icon/folder.png\"></td><td><a href=\"{$foldlist}\">{$foldlist}</a></td><td><a href=\"#info\" onclick=\"loadDoc('{$foldlist}')\"><img src=\"/RESSOURCES/icon/info.png\"></a></td></tr>";
}
$files = glob("*.*");

foreach ($files as $filename) {
$type=substr($filename,strrpos($filename,'.')+1);
echo "<tr><td><img src=\"/index/RESSOURCES/icon/{$type}.png\"></td><td><a href=\"{$filename}\">{$filename}</a></td><td><a href=\"#info\" onclick=\"loadDoc('{$filename}')\"><img src=\"/RESSOURCES/icon/info.png\"></a></td></tr>";
}

?>

行得通,别担心。在过去几天中,我只排除了一个小问题:

如果您运行我的代码,您将看到在每个文件名之前都有一个图标。它通过采用文件的格式获取正确的图标。很酷,对吧

但我的问题是: 假设我有两个文件:dummy.zip和dummy.tar

这两个文件将获取“zip.png”和“tar.png”-这两个图标完全相同。所以基本上,我让客户端加载两倍于同一个图标,这会使我的页面明显变慢。没什么戏剧性的?嗯,我现在有100多个文件。。。它们几乎都有不同的格式

我怎样才能做到这一点: 如果$icon==zip或tar或gz加载zip.png

干杯。

排队后

$type = substr($filename,strrpos($filename,'.')+1);
之前

echo "<tr><td><img src=\"/index/RESSOURCES/icon/{$type}.png\"></td><td><a href=\"{$filename}\">{$filename}</a></td><td><a href=\"#info\" onclick=\"loadDoc('{$filename}')\"><img src=\"/RESSOURCES/icon/info.png\"></a></td></tr>";
它将在您的线路之后加载所有三种情况下的
zip.png

$type = substr($filename,strrpos($filename,'.')+1);
之前

echo "<tr><td><img src=\"/index/RESSOURCES/icon/{$type}.png\"></td><td><a href=\"{$filename}\">{$filename}</a></td><td><a href=\"#info\" onclick=\"loadDoc('{$filename}')\"><img src=\"/RESSOURCES/icon/info.png\"></a></td></tr>";

它将加载所有三种情况下的
zip.png

我不清楚你在问什么。首先,文件扩展名不表示文件中的内容。即使文件夹名称中也可以包含.png,因此您的glob也可以为您获取文件夹。第二,可能有数千个字段扩展,我怀疑每个字段扩展都有一个单独的图标。制作一个固定的图标列表,并将其存储在关联数组中。然后,当您查看目录内容时,检查扩展名是否在数组中,如果不在,则使用通用文件图标。通过这种方式,您可以将多个扩展映射到单个图标。浏览器不会两次加载图标,如果路径相同,它将使用本地图像cache@DavidBray-首先,我也认为问题是关于它的,但事实并非如此。作者使用不同的路径获取不同的文件,但其中一些文件可能包含相同的图标图像,在这种情况下,他只想加载一个图像。是的,他没有对文件类型进行分类。我不认为你问的是什么。首先,文件扩展名不表示文件中的内容。即使文件夹名称中也可以包含.png,因此您的glob也可以为您获取文件夹。第二,可能有数千个字段扩展,我怀疑每个字段扩展都有一个单独的图标。制作一个固定的图标列表,并将其存储在关联数组中。然后,当您查看目录内容时,检查扩展名是否在数组中,如果不在,则使用通用文件图标。通过这种方式,您可以将多个扩展映射到单个图标。浏览器不会两次加载图标,如果路径相同,它将使用本地图像cache@DavidBray-首先,我也认为问题是关于它的,但事实并非如此。作者使用不同的路径获取不同的文件,但其中一些文件可能包含相同的图标图像,在这种情况下,他只想加载一个图像。对吗?他没有对文件类型进行分类