我目前正在使用scandir来获取上传文件夹的内容。这是我的代码,指定目录:
$dir = /var/www/vhosts/mywebsite.com/httpdocs/admin/newsletters/1234-16-10-2013/
$files = scandir($dir);
然后我循环完成这样的结果:
foreach($files as $file) {
echo '<option value="'.$file.'">'.$file.'</option>';
}
以上工作正常并正确填充我的选择菜单。但是由于某些原因,选择菜单中的选项如下所示:
<option value=".">.</option>
<option value="..">..</option>
<option selected="selected" value="header.jpg">header.jpg</option>
<option value="sale.jpg">sale.jpg</option>
<option value="show-now.jpg">show-now.jpg</option>
前两个选项包含句号。第一个有1个,第二个有2个。
有谁知道这是为什么?是因为目录的深度吗?
非常感谢任何帮助!
答案 0 :(得分:4)
这是因为系统条目.
和..
是指向“当前目录”和“父目录”的指针。如果您不想在输出中看到它们,则需要对它们进行过滤。
您可能希望使用is_file()过滤条目 - 然后.
将跳过..
,因为它们实际上是目录(指向它们的指针)
答案 1 :(得分:1)
Scandir相对较慢。
foreach (new DirectoryIterator($path) as $file)
{
if($file->isDot()) continue;
if($file->isDir()))
{
print $file->getFilename() . '<br />';
}
}