我使用以下代码显示文件夹的内容说图像(目录和文件夹中的文件)
<?php
$dir="images/"; // Directory where files are stored
if ($dir_list = opendir($dir))
{
while(($filename = readdir($dir_list)) !== false)
{
$newvar1="$dir$filename";// For Hyperlink Path
?>
<p><a href="<?php echo $newvar1; ?>"><?php echo $filename;
?></a></p>
<?php
}
closedir($dir_list);
}
?>
但PHP文件显示带有两个额外链接的输出
我尝试使用“filesize”函数过滤这两个链接,但收到了一些错误。
我该如何解决这个问题?
答案 0 :(得分:2)
使用支票跳过当前目录和父目录。
while(...) {
if($filename == ".." || $filename == ".") continue;
...
}
答案 1 :(得分:1)
将您的代码修改为以下内容:
while(($filename = readdir($dir_list)) !== false)
{
if($filename != '.' || $filename != '..') // This part to check and ignore
$newvar1="$dir$filename";// For Hyperlink Path
else
continue; //while loop will no further be processed!
//...
}
答案 2 :(得分:0)
这是一个更深入的答案,我非常厌倦了这些事情......这绝对是一段可怕的代码,即使Php允许这样可怕的事情。< / p>
这样的东西更容易阅读,更易于维护,更容易调试:
<?php
$tab = array();
$dir="images/"; // Directory to parse
if ($dir_list = opendir($dir))
{
while(($filename = readdir($dir_list)) !== false)
{
if($filename != ".." && $filename != ".")
{
$tab[$filename] = $dir.$filename; // Hyperlink Path
}
}
closedir($dir_list);
}
/* Display separated from logic */
foreach ($tab as $filename => $hyperlink)
{
echo '<p><a href="'.$hyperlink.'">'.$filename.'</a></p>';
}
?>
更紧凑,但不太容易阅读:
<?php
$tab = array();
$dir="images/"; // Directory to parse
if ($dir_list = opendir($dir)) {
while(($filename = readdir($dir_list)) !== false) {
if($filename != ".." && $filename != ".") {
$tab[$filename] = $dir.$filename; // Hyperlink Path
}
}
closedir($dir_list);
}
/* Display separated from logic */
foreach ($tab as $filename => $hyperlink) {
echo '<p><a href="'.$hyperlink.'">'.$filename.'</a></p>';
}
?>
有些人(包括我的老教师)告诉“如果有一行代码,请不要使用{}
”(我非常不同意,因为它可能会导致以后的错误)但这里是“优化”版本:
<?php
$tab = array();
$dir="images/";
if ($dir_list = opendir($dir)) {
while(($filename = readdir($dir_list)) !== false)
if($filename != ".." && $filename != ".")
$tab[$filename] = $dir.$filename; // Hyperlink Path
closedir($dir_list);
}
foreach ($tab as $filename => $hyperlink)
echo '<p><a href="'.$hyperlink.'">'.$filename.'</a></p>';
?>