PHP:List 个目录中的文件

PHP:List of files in a directory

我正在学习 HTML、CSS 和 PHP。

我目前正在尝试编写一个脚本,该脚本列出文件夹中的所有文件
作为下载的有序列表link。

脚本运行良好,但在带有 link 的每个列表项之后,它都会放置一个额外的
空项,如下所示:

<ol>
    <li><a href="/~ftp/files/file1.txt">file1.txt</a></li>
    <li></li>
    <li><a href="/~ftp/files/file2.txt">file2.txt</a></li>
    <li></li>
</ol>

我不明白为什么。
这是页面代码:

<DOCTYPE html>
<html>
<head>
    <title>Files</title>
    <style>
        body {
            background-color: #D8DBE2;
        }
        div {
            margin: 0px;
            padding: 0px 5px;
            display: inline-block;
            background-color: white;
            border-style: none;
            border-radius: 6px 6px 0px 0px;
        }
        ol {
            margin: 0px;
            background-color: white;
            border-style: none;
            border-radius: 0px 6px 6px 6px;
            width: 500px;
            }
    </style>
</head>
<body>
    <div>
        <p><b>Files</b></p>
    </div>
    <ol>
        <?php
        $dir = '/home/ftp/public_html/files';
        $files = array_slice(scandir($dir),2); //getting rid of "." and ".."
        $s = sizeof($files);
        for ($i=0;$i<$s;$i++)
        {
            $file=implode("",array_slice($files,$i,1));
            echo "<li><a href=\"/~ftp/files/".$file."\">".$file."</a><li>";
        }
        ?>
    </ol>
</body>
</html>

您没有正确关闭 HTML li 标签:

echo "<li><a href=\"/~ftp/files/".$file."\">".$file."</a></li>";

您在结束 </li> 标记中缺少正斜杠。

echo "<li><a href=\"/~ftp/files/{$file}\">{$file}</a></li>";

问题是您没有关闭 <li> 标签,而是在每次迭代中打开一个新标签。 HTML 没有那么聪明,所以你需要做正确的事情。

尝试更改此设置:"<li><a href=\"/~ftp/files/".$file."\">".$file."</a><li>"

为此:"<li><a href=\"/~ftp/files/".$file."\">".$file."</a></li>"

除此之外,你的代码还有其他问题,可以写得更简单一些,像这样:

$dir = '/home/ftp/public_html/files';
$files = array_slice(scandir($dir),2);
foreach($files as $file){
    echo '<li><a href="/~ftp/files/'.$file.'">'.$file."</a></li>";
}

您的 <doctype> 声明也有问题,标签上缺少 !。正确的做法是这样的:<!DOCTYPE html>

希望对您有所帮助。