Beste PHP-ers,

hoe kan ik de bestanden in een dir op mijn server counten? Het doel hiervan is om te checken of de directory empty is of niet.

Met deze code:

<?php
count(glob("" . $dirname . "*.*"));
?>


worden alle files in de directory gecounted. Maar ik moet alleen te weten komen of er bestanden zoals images of documents in de dir bestaan, en niet of er subdirs zijn...


Alvast bedankt voor jullie hulp.


Greetz, Mike ;)
Persoonlijk maak ik liever gebruik van de [php]class.dir[/php]. Dat is een soort van alias gedoe voor [php]opendir[/php]. Ik denk dat je daar sowieso meer / makkelijker mee kan werken dan met glob. Kijk maar eens naar wat links op die pagina's over opendir en de dir class.
Yep zal ik ff checke :D

Bedankt.


Heeft iemand anders noch experience met dit gebeure? ^^
Owja, ik ga je het nu dus nog niet zo helemaal uitleggen omdat ik denk dat je met php.net d'r wel uit moet komen. Er staat daar genoeg informatie waarvan je kunt leren ;-).
Zoiets kan ook...


<?php
$files = glob($dirname."*.*");

$ignore = Array(".", "..");
foreach($files as $thisfile) {
	if(!in_array($thisfile, $ignore)) {
		// Alles wat moet werken zodra er files in de dir zijn komt hier...
	}
}
?>


Heb voor mijn probleem een andere optie gevonden:


I.p.v de '*.*' heb ik 'prefix_*.*' gebruikt, en nu werkt 't ook...



Bedankt voor je hulp :)


Greetz, Mike
Yep kan ook.
Of:
<?php
$iterator = new DirectoryIterator('./'); // huidige map
$filesInMap = 0;
foreach ($iterator as $file) {
    if (!$file>isDot()) {
        $filesInMap++;
    }
}
echo 'Files in map: ' . $filesInMap;
Misschien ook nog met is_file() kijken of het een file is en geen directory?
Of het scriptje van GaMer13 aanpassen zodat er geen directories worden meegenomen... Regel 5 wordt dan:
<?php
if ($fileinfo->isFile()) {
?>
Waar komt dat object $fileinfo vandaan? moet dat niet gewoon $file zijn?

dus
$file->isFile() ?
Citroen schreef op 02.09.2009 01:26
Waar komt dat object $fileinfo vandaan? moet dat niet gewoon $file zijn?

dus
$file->isFile() ?

=== true ;-)

Reageren