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>
希望对您有所帮助。
我正在学习 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>
希望对您有所帮助。