PHP列表目录文件(不是文件夹)不显示带有>的文件3个字符文件类型,例如docx

时间:2015-01-16 15:02:30

标签: php directory

这里的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>";
            }

非常感谢帮助:)

4 个答案:

答案 0 :(得分:3)

以下内容对您有用;正如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)或根本没有扩展(例如README文件)。在这种情况下(与许多I / O功能一样),最好留给语言本身;它们具有更广泛的检测模式,并且通常比自定义实现更便携

答案 1 :(得分:2)

我不确定您为什么要测试(除非您排除没有扩展名的文件或扩展名少于三个或超过四个字符的文件),如果您&#34;还显示4字符文件类型的文件&#34;但是如果你想测试3或4个字符,你可以改变它 -

if (substr($file, -4, -3) ==".")

这样的事情

if ((substr($file, -4) ==".") || (substr($file, -5) ==".")) 

第一个条件匹配&#34;。&#34;在3个字母扩展名的文件上。第二个是带有4个字母扩展名的文件。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

感谢您的回复。 杰伊布兰查德,非常感谢你。

$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 "";
        }

它可能还有很长的路要走,但我喜欢这种方式,因为你可以更好地控制要显示的内容。