AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP] Verzeichnisse rekursiv in ein Array schreiben
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Verzeichnisse rekursiv in ein Array schreiben

Ein Thema von Luckie · begonnen am 30. Apr 2011 · letzter Beitrag vom 1. Mai 2011
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

[PHP] Verzeichnisse rekursiv in ein Array schreiben

  Alt 30. Apr 2011, 00:05
Ich versuche gerade Verzeichnisse in ein Array zu schreiben:
Code:
<?php

$dirs = Array();
$count = 0;

function dir_rekursiv($verzeichnis) { 
    $handle = opendir($verzeichnis);   
    while ($datei = readdir($handle))
    { 
        if ($datei != "." && $datei != "..")
        { 
            if (is_dir($verzeichnis.$datei))
            {               
                dir_rekursiv($verzeichnis.$datei.'/');             
            }                    
        }      
    } 
   $dirs[$count] = $verzeichnis;
   $count++;   
    closedir($handle);
   return $dirs;


$dirs = dir_rekursiv('../../');
foreach ($dirs as $dir) {            
   echo "$dir<br>\n";
}

?>
Leider gibt er mir nur das angegeben Verzeichnis aus. Und wie kann ich den Root angeben? Wenn ich '/'angebe, dann sagt er mir, dass er das Verzeichnis nicht öffnen können.

OK. Habs:
Code:
<?php

$dirs = Array();
$count = 0;

function dir_rekursiv($verzeichnis) { 
    $handle = opendir($verzeichnis);   
    while ($datei = readdir($handle))
    { 
        if ($datei != "." && $datei != "..")
        { 
            if (is_dir($verzeichnis.$datei))
            {               
            $dirs[$count] = $verzeichnis.$datei;
            $count++;
                dir_rekursiv($verzeichnis.$datei.'/');             
            }                    
        }      
    }       
    closedir($handle);    
   return $dirs;


$dirs = dir_rekursiv('../../');
foreach ($dirs as $dir) {            
   echo "$dir<br>\n";
}

?>
Bleibt noch das Problem mit dem Root Verzeichnis.
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie (30. Apr 2011 um 00:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: [PHP] Verzeichnisse rekursiv in ein Array schreiben

  Alt 30. Apr 2011, 00:27
Mist, war doch nicht die Lösung. Jetzt ist es nicht mehr rekursiv.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#3

AW: [PHP] Verzeichnisse rekursiv in ein Array schreiben

  Alt 30. Apr 2011, 00:38
PHP-Quellcode:
if (is_dir($verzeichnis.$datei))
{
    dir_rekursiv($verzeichnis.$datei.'/');
}
im ersten Code ... du mußt da natürlich das Ergebnis der Funktion mit an $dirs anhängen.

oder du machst $dirs global und läßt das Result weg. (bei dir sind sie nur lokal und vollkommen unabhängig von der "globalen" Variable)

PHP-Quellcode:
function dir_rekursiv($verzeichnis) {
    //$dirs = array();
    $dirs[] = $verzeichnis;
    $handle = opendir($verzeichnis);
    while ($datei = readdir($handle))
        if ($datei != "." && $datei != ".." && is_dir($verzeichnis.$datei))
            $dirs = array_merge($dirs, dir_rekursiv($verzeichnis.$datei.'/'));
    closedir($handle);
    return $dirs;
}

$dirs = dir_rekursiv('../../');
foreach ($dirs as $dir)
   echo "$dir<br>\n";
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (30. Apr 2011 um 10:45 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: [PHP] Verzeichnisse rekursiv in ein Array schreiben

  Alt 30. Apr 2011, 01:12
Autsch. Es ist schon spät und man sollte nebenbei nicht per SMS flirten. Aber wie gebe ich das Root-Verzeichnis an? Mit '/' bekomme ich folgende Warnung:
Zitat:
Warning: opendir(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (/var/www/l3s11195:/usr/share/php) in /var/www/l3s11195/html/Privat/Dev/foo.php on line 6 Warning: opendir(/): failed to open dir: Operation not permitted in /var/www/l3s11195/html/Privat/Dev/foo.php on line 6 Warning: readdir() expects parameter 1 to be resource, boolean given in /var/www/l3s11195/html/Privat/Dev/foo.php on line 7 Warning: closedir() expects parameter 1 to be resource, boolean given in /var/www/l3s11195/html/Privat/Dev/foo.php on line 10 /
Ich brauche aber das Root-Verzeichnis meines HTML Ordners.

Und wenn ich es so aufrufe:
Code:
$dirs = dir_rekursiv($_SERVER["DOCUMENT_ROOT"].'/');
dann habe ich natürlich den Pfad zum DOCUMENT_ROOT dabei, was ich aber auch nicht brauchen kann.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: [PHP] Verzeichnisse rekursiv in ein Array schreiben

  Alt 30. Apr 2011, 02:51
OK, habe ihn mit str_replace rausgeschmissen. Aber ich habe noch ein Problem:
Code:
echo "<select name='dir' size='10'>\n";      
      foreach ($dirs as $dir)
         if ($dir != '\n') {
            $dir = str_replace($_SERVER["DOCUMENT_ROOT"].'/', '', $dir);
            echo "<option>$dir<option>\n";
         }
      echo "</select>\n";
Ich benutze die Funktion von himitsu, aber in der Listbox ist immer noch eine Leerzeile zwischen den Verzeichnissen. Wo kommen die Leerzeile her und wie bekomme ich sie weg?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: [PHP] Verzeichnisse rekursiv in ein Array schreiben

  Alt 30. Apr 2011, 06:51
Valides HTML wäre hier nicht so schlecht.

Also nicht "<option>$dir<option>" sondern "<option>$dir</option>"

Und schieb's nicht wieder auf die Uhrzeit.
Wenn du so spät/früh nichts auf die Reihe kriegst, mach's wann anders.

Grüße
Matze
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz