从目录中读取文件名

问题描述:

我想从没有任何数据库的目录读取html文件名。我有一个代码,它的工作正常,但它给出了两个空白名称,而我在目录中只有4个文件。从目录中读取文件名

<?php 
if (is_dir('dir')) { 
if ($dh = opendir('dir')) { 
    while (($file = readdir($dh)) !== false) { 
     echo "filename:".$file."<br />"; 
    } 
} 
}?> 

我有4个HTML文件和输出应该是:

filename:aaaaaa kjnnk_13.html 
filename:aaaaaa kjnnk_2.html 
filename:aaaaaa kjnnk_6.html 
filename:aaaaaa kjnnk_9.html 

但我发现2个额外的文件名:

filename:. 
filename:.. 
filename:aaaaaa kjnnk_13.html 
filename:aaaaaa kjnnk_2.html 
filename:aaaaaa kjnnk_6.html 
filename:aaaaaa kjnnk_9.html 

请帮

+1

'if($ file!='。'&& $ file!='..')' –

+0

hank you for reply ...但是在哪里添加条件? – user3526766

+0

也许在'echo'之前? –

。是目前目录 ..是为一个目录上

当使用readdir你会得到那2额外的。

我更喜欢使用glob()。该功能允许您筛选的HTML文件仅过

<?php 
    $files = glob('dir/*html'); 
    foreach($files as $file) { 
     echo "filename:".$file."<br />"; 
    } 
?> 
+0

但是,如果它将是PHP文件,那么将是$ files = glob('dir/* php') – user3526766

+0

正确,并且如果您只需要所有文件:dir/* –

另外,您可以使用FilesystemIterator这将默认跳过点文件:

$it = new FilesystemIterator('dir'); 
foreach ($it as $fileinfo) { 
    echo $fileinfo->getFilename() . "<br/>"; 
} 

更多的答案在计算器:

What exactly are the benefits of using a PHP 5 DirectoryIterator over PHP 4 "opendir/readdir/closedir"?

PHP: scandir() is too slow

Difference between DirectoryIterator and FileSystemIterator