这里的 php 初学者。我希望你们能提供帮助,这是我使用的代码:
$path = 'K:'_Intranet'General Documents';
$dir = opendir($path);
while (($file = readdir($dir)) !== false)
{
if($file != "." && $file != "..")
{
if (substr($file, -4, -3) ==".")
{
echo "<li> <a target='_blank' href='$path/$file'>$file</a><br>";
}
}
}
closedir($dir);
基本上,我如何让它也显示具有 4 个字符文件类型的文件,例如 docx 或 xlsx?
我试过使用它,但它似乎仍然不起作用:
elseif (substr($file, -4) ==".")
{
echo "<li> <a target='_blank' href='$path/$file'>$file</a><br>";
}
帮助将不胜感激:)
以下内容应该适合您; 正如 Danny 的评论所说,您可以简单地检查指定的路径是否解析为文件(而不是目录)。
$path = 'K:'_Intranet'General Documents';
$dir = opendir($path);
while (($file = readdir($dir)) !== false)
{
if (is_file($file))
{
echo "<li> <a target='_blank' href='$path/$file'>$file</a></li>";
}
}
closedir($dir);
这意味着您不需要特别认识到它具有如此长度的扩展名(如果您正在查看更广泛的文件类型,例如 .vcproj 文件或 .htaccess,这将失败)。用户定义的字符串检查的另一个问题是,如果有多个复合扩展名(如 MyGame.vcxproj.filters)或根本没有扩展名(如自述文件)。在这种情况下(与许多 I/O 功能一样),最好留给语言本身;它们具有更广泛的检测模式,并且通常比自定义实现更具可移植性
我不确定为什么要测试(除非您排除没有扩展名的文件或扩展名长度小于 3 个字符或长度小于 3 个字符或超过 4 个字符的文件)如果您"还显示具有 4 个字符的文件文件类型",但如果您想测试 3 或 4 个字符,您可以更改它 -
if (substr($file, -4, -3) ==".")
到这样的东西
if ((substr($file, -4) ==".") || (substr($file, -5) =="."))
第一个条件与具有 3 个字母扩展名的文件上的"."匹配。第二个是带有 4 个字母扩展名的文件。
$path = 'K:'_Intranet'General Documents';
$dir = opendir($path);
while (($file = readdir($dir)) !== false)
{
if($file != "." && $file != "..")
{
$format=end(explode(".", $file));
if ($format=="docx" || $format=="xlsx")
{
echo "<li> <a target='_blank' href='$path/$file'>$file</a><br>";
}
}
}
closedir($dir);
感谢您的回复。杰伊·布兰查德,非常感谢你。
$path = 'K:'_Intranet'General Documents';
$dir = opendir($path);
while (($file = readdir($dir)) !== false)
{
if($file != "." && $file != "..")
{
if (substr($file, -4, -3) ==".")
{
echo "<li> <a target='_blank' href='$path/$file'>$file</a><br>";
}
elseif (substr($file, -5, -4) ==".")
{
echo "<li> <a target='_blank' href='$path/$file'>$file</a><br>";
}
}
}
closedir($dir);
这就像一个魅力,它现在列出了所有 3/4 扩展名文件类型!
我还完成了仅显示文件夹的代码(这仅在您只有 3/4 扩展名文件类型时才有效):
$path = 'K:'_Intranet'General Documents';
$dh = opendir($path);
while (($file = readdir($dh)) !== false)
{
if($file != "." && $file != "..")
{
if (substr($file, -4, -3) ==".")
{
echo "";
}
elseif (substr($file, -5, -4) ==".")
{
echo "";
}
else
{
echo "<img src='pictures/folder.png'></a> <a target='_top' href='$path/$file'>$file</a><br>";
}
}
}
closedir($dh);
如果您有扩展名文件类型或多或少的文件,那么就像 Alec 所说的那样,您需要指定每个文件类型。因此,例如,如果您有一个文件类型.db并且您不想列出它的文件,则需要添加另一个:
elseif (substr($file, -3, -2) ==".")
{
echo "";
}
这可能是很长的路要走,但我有点喜欢这种方式,因为您可以更好地控制要显示的内容。