Doorzoeken van mappen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Martijn Roverts

Martijn Roverts

23/05/2008 13:16:00
Quote Anchor link
Ik ben op zoek naar een functie om te zoeken binnen een map op een mapnaam (zie voorbeeld)

De mapnaam kan zich op hetzelfde nivo bevinden, maar ook op een nivo dieper of misschien nog dieper.

Voorbeeld:
pathnaarmap/foto/thumb
pathnaarmap/foto/album1/thumb
pathnaarmap/foto/album2/fotograaf1/thumb
pathnaarmap/foto/album2/fotograaf2/thumb
pathnaarmap/foto/album3/fotograaf1/thumb
pathnaarmap/foto/album3/fotograaf2/thumb

De reden dat ik dit wil is om vanuit het fotoalbum van Arjan Kapteijn op mijn frontpagina een random foto banner te plaatsen.

De banner zelf maken lukt mij goed, maar om in de mappenstructuur te zoeken en dan een random foto er uit te spugen vind ik lastig.

Zou zo'n functie traag zijn, wat denken jullie?
 
PHP hulp

PHP hulp

26/04/2024 14:09:29
 
Joren de Wit

Joren de Wit

23/05/2008 13:17:00
Quote Anchor link
Je zou eens naar de directoryIterator kunnen kijken...
 
Jelle Posthuma

Jelle Posthuma

23/05/2008 13:23:00
Quote Anchor link
Ik heb hier een voorbeeld, deze haalt alle mappen op, en plaatst alle mappen en submappen + bestanden in een array:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
$savedPaths
= array();
function
loadFiles($map){
    $arr = array();
    $iterator = new RecursiveDirectoryIterator($map);
    foreach (new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::CHILD_FIRST) as $bestand){
        if($bestand->isFile() || $bestand->isDir())$arr[]=$bestand->getFileName();
    }

    return $arr;
}
function
loadFolder($map){
    $arr = array();
    $savedPaths = array();
    $iterator = new RecursiveDirectoryIterator($map);
    $b=0;
    foreach (new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::CHILD_FIRST) as $bestand){
        if(!in_array($bestand->getPath(),$savedPaths)){
            $path = explode('\\',$bestand->getPath());
            $arr[] = $path;
            $savedPaths[] = $bestand->getPath();
            $arr[$b]['files'] = loadFiles($savedPaths[$b]);
            $b++;
        }
    }

    /*echo '<pre>';
    print_r($savedPaths);
    echo '</pre>';*/

    return $arr;
}


$mappen = loadFolder('.');
echo '<pre>';
print_r($mappen);
echo '</pre>';
?>


Voorbeeld van een output:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Array
(
    [0] => Array
        (
            [0] => .
            [files] => Array
                (
                    [0] => directory.php
                    [1] => map1
                    [2] => bestand.txt
                    [3] => bestand2.txt
                    [4] => subsubmap1
                    [5] => submap1
                    [6] => submap2
                    [7] => map2
                )
        )
    [1] => Array
        (
            [0] => .
            [1] => map2
            [2] => submap1
            [files] => Array
                (
                    [0] => bestand.txt
                    [1] => bestand2.txt
                    [2] => subsubmap1
                )
        )
    [2] => Array
        (
            [0] => .
            [1] => map2
            [2] => submap1
            [3] => subsubmap1
            [files] => Array
                (
                    [0] => bestand2.txt
                )
        )
    [3] => Array
        (
            [0] => .
            [1] => map2
            [files] => Array
                (
                    [0] => bestand.txt
                    [1] => bestand2.txt
                    [2] => subsubmap1
                    [3] => submap1
                    [4] => submap2
                )
        )
)
 
Martijn Roverts

Martijn Roverts

23/05/2008 13:33:00
Quote Anchor link
Wow dat is een snelle reactie!
Maar ik zie dat je PHP 5.1 nodig hebt. Ik draai nog op PHP 4.4.8.
 
Jelle Posthuma

Jelle Posthuma

23/05/2008 13:35:00
Quote Anchor link
Tijd om te upgraden?

RecursiveDirectoryIterator is een verdomt handige functie :).
 
Martijn Roverts

Martijn Roverts

23/05/2008 13:39:00
Quote Anchor link
Ik ben in dit geval afhankelijk van mijn gesponserde hosting(voor een sportvereniging) dus dat is op dit moment geen optie.

Maar als ik zo door de functie heen kijk ziet het er idd verdraait handig uit.

Waar zou ik gebruik van kunnen maken in mijn geval?
Gewijzigd op 01/01/1970 01:00:00 door Martijn Roverts
 
Jelle Posthuma

Jelle Posthuma

23/05/2008 14:51:00
Quote Anchor link
Dan zou met opendir enz alle mappen kunnen doorzoeken en in een array kunnen gooien, maar dat is wel lastig om dat recursief te krijgen.
Er zal ongetwijfeld op internet ook wel een recursief script te vinden zijn die met opendir werkt.
 
Joren de Wit

Joren de Wit

23/05/2008 15:11:00
Quote Anchor link
Recursieve functies in PHP

Hier staat een voorbeeld van het recursief uitlezen van een directory...
 
Martijn Roverts

Martijn Roverts

23/05/2008 15:24:00
Quote Anchor link
Bedankt! Ik ga er mee aan de slag en als ik nog vragen heb gooi ik ze hier weer naar binnen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.