|
Posted by thib΄ on 01/14/08 00:38
Daniel Ennis wrote:
> Fred Atkinson wrote:
>> On Sun, 13 Jan 2008 20:29:20 +0100, thibΒ΄ <thyb0@coralsnake-team.com>
>> wrote:
>>
>>> Fred Atkinson wrote:
>>>> I've looked at php.net and am not able to find this one.
>>>> What is the function that will return the number of files in a
>>>> subdirectory?
>>>> Regards,
>>>>
>>>>
>>>> Fred
>>> Just try this one:
>>> <?php
>>> function countfiles($dir) {
>>> if( $handle = opendir($dir) ) {
>>> $c = 0;
>>> while( $file = readdir($handle) )
>>> if( !preg_match('/\.\.?/', $file) ) $c++;
>>> return $c;
>>> } else return false;
>>> }
>>> ?>
>>>
>>> This should make it; you can of course change de regexp filter or use
>>> different methods (this one only avoids counting '.' and '..')
>>>
>>> Call example:
>>>
>>> Number of files in subdir 'dir/subdir/' is <?php echo
>>> countfiles('dir/subdir/') or '[warning: unable to open dir]'; ?>
>>>
>>> -thibΒ΄
>>
>> I've tried this script. No matter how many files are in the
>> directory, it says that there is only one file. The directory I used
>> should have returned thirteen as a value.
>> I tried making the path '.' so it would count the files in the
>> same directory it was in. But it again said it there was only one
>> when there was also thirteen files in that directory.
>> Here is how I coded the call:
>> <?php echo countfiles('.') or '[warning: unable to open dir]'; ?>
>>
>> I copied it from your post. The only alterations I made were
>> to make it three lines and change the directory location.
>> Regards,
>>
>>
>> Fred
>
> Did you try my solution? It should be alot quicker than the above
> method, but I did forget to ask, are their directories in the folder
> that shouldnt be counted?
>
> Thats a problem with the above example by thib also, file names without
> extensions wouldnt be counted.
>
> A sure fire way of doing it would be:
>
> <?php
> $dir = './directory';
> function countfiles($dir = '.')
> {
> $count = 0;
> $dir = rtrim($dir,'/').'/';
> if(!is_dir($dir)) return false;
> foreach(new DirectoryIterator($dir) as $file)
> {
> if(is_file($dir.$file)) $count++;
> }
> return $count;
> }
> echo countfiles();
> ?>
>
> Of course, this is PHP5, and if you dont have PHP5, you should be
> changing hosts :P Use these new SPL functions given to us for faster code!
Good to know, is that really that faster?
Well, FM', where are you. Ah', there..
-thibΒ΄
Navigation:
[Reply to this message]
|