如何检查文件夹是否只包含php文件

时间:2016-06-07 11:30:56

标签: php

我想检查文件夹是否包含至少1个真实文件。我试过这段代码:

$dir = "/dir/you/want/to/scan"; 
$handle = opendir($dir); 
$folders = 0; 
$files = 0; 

while(false !== ($filename = readdir($handle))){ 
    if(($filename != '.') && ($filename != '..')){ 
        if(is_dir($filename)){ 
            $folders++; 
        } else { 
            $files++; 
        } 
    } 
} 

echo 'Number of folders: '.$folders; 
echo '<br />'; 
echo 'Number of files: '.$files; 

当文件夹scan中有1个子文件夹和2个真实文件时;上面的代码给出了输出:

Number of folders: 0

Number of files: 3

所以看起来子文件夹被视为文件。但我只想检查真实文件。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:3)

根据您指定路径的第一行(与脚本路径不同),您应该在is_dir if子句中组合$ dir和$ filename。

为什么?

因为如果您的脚本已启用:

/var/web/www/script.php

然后检查$ dir:

的/ etc / httpd的

其中包含子文件夹“conf”,您的脚本将检查子文件夹/ var / web / www / conf

答案 1 :(得分:3)

您可以使用copy轻松完成这项工作:

glob()

答案 2 :(得分:1)

您可以使用scandir

scandir - 列出指定路径中的文件和目录

<?php 
$dir = "../test"; 
$handle = scandir($dir); 
$folders = 0; 
$files = 0; 
foreach($handle as $filename)
{ 
    if(($filename != '.') && ($filename != '..'))
    { 
        if(is_dir($filename))
        { 
            $folders++; 
        } 
        else 
        { 
            $files++; 
        } 
    } 
} 

echo 'Number of folders: '.$folders; 
echo '<br />'; 
echo 'Number of files: '.$files; 
?>