Function scan_directory_recursively

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Matthijs

matthijs

25/10/2007 14:26:00
Quote Anchor link
Hoi ik heb het volgende script gevonden :

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
55
56
57
58
59
60
61
62
63
64
65
<?php

// ------------ lixlpixel recursive PHP functions -------------
// scan_directory_recursively( directory to scan, filter )
// expects path to directory and optional an extension to filter
// ------------------------------------------------------------

function scan_directory_recursively($directory, $filter=FALSE)
{

    if(substr($directory,-1) == '/')
    {

        $directory = substr($directory,0,-1);
    }

    if(!file_exists($directory) || !is_dir($directory))
    {

        return FALSE;
    }
elseif(is_readable($directory))
    {

        $directory_list = opendir($directory);
        while($file = readdir($directory_list))
        {

            if($file != '.' && $file != '..')
            {

                $path = $directory.'/'.$file;
                if(is_readable($path))
                {

                    $subdirectories = explode('/',$path);
                    if(is_dir($path))
                    {

                        $directory_tree[] = array(
                            'path'      => $path,
                            'name'      => end($subdirectories),
                            'kind'      => 'directory',
                            'content'   => scan_directory_recursively($path, $filter));
                    }
elseif(is_file($path))
                    {

                        $extension = end(explode('.',end($subdirectories)));
                        if($filter === FALSE || $filter == $extension)
                        {

                            $directory_tree[] = array(
                            'path'        => $path,
                            'name'        => end($subdirectories),
                            'extension' => $extension,
                            'size'        => filesize($path),
                            'kind'        => 'file');
                        }
                    }
                }
            }
        }

        closedir($directory_list);
        return $directory_tree;
    }
else{
        return FALSE;    
    }
}

// ------------------------------------------------------------


// to use this function to get all files and directories in an array, write:
// $filestructure = scan_directory_recursively('path/to/directory');

// to use this function to scan a directory and filter the results, write:
// $fileselection = scan_directory_recursively('directory', 'extension');


?>


Hoe krijg ik nu alle gegevens ge-echo-ed?

Ik dacht heel simpel:

echo scan_directory_recursively('c:/webserver/www');

of

echo scan_directory_recursively('c:/webserver/www', 'php');

Maar krijg als resultaat: Array

Iemand die me kan helpen?

Gr,

Matthijs
 
PHP hulp

PHP hulp

25/11/2024 01:42:07
 
Gerben Jacobs

Gerben Jacobs

25/10/2007 14:47:00
Quote Anchor link
Gebruik print_r ipv echo, dan leest ie heel netjes een array uit.


of doe het zo

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "<pre>".print_r(scan_directory_recursively('C:/webserver/www'))."</pre>";
?>
 
Matthijs

matthijs

25/10/2007 15:00:00
Quote Anchor link
bedankt Gerben,

maar hoe kan ik nu puur de inhoud van iedere variabele tonen zonder

Array ( [0] => Array ( [path] => C:/webserver/www

met een for lus ofzo?
 
Gerben Jacobs

Gerben Jacobs

25/10/2007 15:03:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach($array as $path) {
echo $path;
}

?>


Ik heb geen idee hoe die array er uit komt te zien, maar als er strings gebruikt worden als index dan..

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach($array as $key=>$path) {
echo $key." = > ".$path;
}

?>
 
Bo az

Bo az

25/10/2007 15:09:00
Quote Anchor link
@Gerben Jacobs
Eigenlijk zou je dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "<pre>".print_r(scan_directory_recursively('C:/webserver/www'))."</pre>";
?>

Zo moeten doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "<pre>".print_r(scan_directory_recursively('C:/webserver/www'), true)."</pre>";
?>

Lees de manual van print_r() er maar eens op na.

@matthijs,
dat kan met een foreach lus.
 
Gerben Jacobs

Gerben Jacobs

25/10/2007 15:16:00
Quote Anchor link
Wat een nasty functie, ik loop nog tegen wat probleempjes aan.. maar hier's een voorlopig iets

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
function recursive_reader($array) {
    foreach($array as $name) {

        if($name["kind"] == "directory")
            recursive_reader($name["content"]);
        else
            echo $name["name"]."<br />";
    }
}

recursive_reader(scan_directory_recursively('C:\webserver\www'));
?>


Edit: Kk.. fixed.. maar dit is zonder enige opmaak.
Gewijzigd op 01/01/1970 01:00:00 door Gerben Jacobs
 
Matthijs

matthijs

25/10/2007 15:20:00
Quote Anchor link
@Boaz
Ik heb er
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "<pre>".print_r(scan_directory_recursively('C:/webserver/www'), true)."</pre>";
?>

van gemaakt en dat ziet er wel beter uit.

@Boaz en Gerben
Ik krijg het gewoon niet voor elkaar.

Ik heb ze allebei uitgevoerd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$filestructure
= scan_directory_recursively('C:/webserver/www');

foreach($filestructure as $path) {
echo $path;
}

?>

resultaat: ArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArray

en

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
foreach($filestructure as $key=>$path) {
echo $key." = > ".$path;
}
}

?>

resultaat: 0 = > Array1 = > Array2 = > Array3 = > Array4 = > Array5 = > Array6 = > Array7 = > Array8 = > Array9 = > Array10

Gegegevens uit een database halen lukt me wel met:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT * FROM personeel");
while($row = mysql_fetch_array($result))
  {

  echo $row['voornaam'] . " " . $row['achternaam'];
  echo "<br />";
  }

?>


Nog een idee?
Gewijzigd op 01/01/1970 01:00:00 door matthijs
 
Gerben Jacobs

Gerben Jacobs

25/10/2007 15:22:00
Quote Anchor link
Zie mijn vorige post.
 
Matthijs

matthijs

25/10/2007 15:34:00
Quote Anchor link
Gerben,

Ik krijg nu wel alle bestandsnamen te zien, maar ik vraag me af of het wel de bedoeling is om een extra functie te maken om deze functie uit te lezen.

Anyway, mijn dank is 1m85!
 
Gerben Jacobs

Gerben Jacobs

25/10/2007 15:39:00
Quote Anchor link
Vandaar dat ik ook zei dat het een nasty functie is, want hij geeft gewoon een über geneste array terug (uitgaand van een redelijke grote directory die je opgeeft), meer niet..
 



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.