Discussion:
readdir: Dateien & Unterordner ausschließen
(zu alt für eine Antwort)
Ingo Pohlschneider
2005-08-17 13:41:56 UTC
Permalink
Hallo
ich möchte ein verzeichnis via readdir auslesen.

dabei sollen ".", "..", "*.db" und alle Unterverzeichnisse nicht
ausgegeben werden.

ich habe das mit

if ($file != "." && $file != ".." && $file != "*.db" && !is_dir($file))

versucht.

Leider wird das Unterverzeichnis noch angezeigt.

Hat jemand eine Idee woran das liegen könnte?

MFG Ingo
Niels Braczek
2005-08-17 13:52:37 UTC
Permalink
Post by Ingo Pohlschneider
dabei sollen ".", "..", "*.db" und alle Unterverzeichnisse nicht
ausgegeben werden.
ich habe das mit
if ($file != "." && $file != ".." && $file != "*.db" && !is_dir($file))
versucht.
Leider wird das Unterverzeichnis noch angezeigt.
Wie kommst du auf die Idee, dass String-Vergleich-Funktionen das
Pattern-Matching des Dateisystems beherrschen?

MfG
Niels
--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
`----------------------------------------------------------------´
Ingo Pohlschneider
2005-08-17 15:34:55 UTC
Permalink
Post by Niels Braczek
Post by Ingo Pohlschneider
dabei sollen ".", "..", "*.db" und alle Unterverzeichnisse nicht
ausgegeben werden.
ich habe das mit
if ($file != "." && $file != ".." && $file != "*.db" && !is_dir($file))
versucht.
Leider wird das Unterverzeichnis noch angezeigt.
Wie kommst du auf die Idee, dass String-Vergleich-Funktionen das
Pattern-Matching des Dateisystems beherrschen?
MfG
Niels
hallo
meines wissen gibt is_dir() true oder false zurück.
ich habe es auch schon mit != true versucht geht auch nicht.

wie könnte ich denn sonst verhindern, dass unterverzeichnisse mit
eingeblendet werden?

mfg Ingo
Tobias M.
2005-08-17 15:43:18 UTC
Permalink
Post by Ingo Pohlschneider
hallo
meines wissen gibt is_dir() true oder false zurück.
tut es auch..
Post by Ingo Pohlschneider
ich habe es auch schon mit != true versucht geht auch nicht.
$dir = opendir($path);
while ($entry = readdir($dir))
{
if (($entry != '.') && ($entry != '..') &&
(!is_dir($path.'/'.$entry)))
{
echo "bla bla";
}
}

so müsste das eigentlich gehen....

mfg
Tobias M.
2005-08-17 16:23:58 UTC
Permalink
sorry, wie ich gerade in einem anderen beitrag gelernt habe muss es so
heißen:

$dir = opendir($path);
while (false !== ($entry = readdir ($dir)))
{
if (($entry != '.') && ($entry != '..') &&
(!is_dir($path.'/'.$entry)))
{
echo "bla bla";
}
}

mfg
Ingo Pohlschneider
2005-08-18 09:17:12 UTC
Permalink
Post by Tobias M.
sorry, wie ich gerade in einem anderen beitrag gelernt habe muss es so
$dir = opendir($path);
while (false !== ($entry = readdir ($dir)))
{
if (($entry != '.') && ($entry != '..') &&
(!is_dir($path.'/'.$entry)))
{
echo "bla bla";
}
}
mfg
ich habe das problem jetzt wie folgt gelöst:


$handle = opendir ($CONFIG['smiley_path']);
while ($file = readdir($handle))
{
if (filetype($CONFIG['smiley_path'].$file)!="dir" &&
filetype($CONFIG['smiley_path'].$file)!="database/db")
{
$i++;
$tpl->newBlock("smiley");
$tpl->assign("path", $CONFIG['smiley_path']);
$tpl->assign("file", $file);
}
}

closedir($handle);

Problem ist jetzt nur, dass ich den MIME Typ vom *.db nicht herausfinde,
und diese Files sich deshalb leider nicht ausblenden lassen via filetype()

Kennt jemand von euch den Filetype?

mfg Ingo
Niels Braczek
2005-08-18 14:11:46 UTC
Permalink
Post by Ingo Pohlschneider
$handle = opendir ($CONFIG['smiley_path']);
while ($file = readdir($handle))
{
if (filetype($CONFIG['smiley_path'].$file)!="dir" &&
filetype($CONFIG['smiley_path'].$file)!="database/db")
Problem ist jetzt nur, dass ich den MIME Typ vom *.db nicht herausfinde,
und diese Files sich deshalb leider nicht ausblenden lassen via filetype()
Du sagst immer '*.db', Daraus schließe ich, dass die betroffenen Dateien
tatsächlich *.db heißen. Verwende dann lieber Stringfunktionen.

Außerdem ist die zweimalige identische Concatenation
Ressourcenverschwendung. Besser

while ($file = readdir($handle)) {
$filename = $CONFIG['smiley_path'].$file;
if (!is_dir($filename) && substr($filename, -3) == '.db') {...}

MfG
Niels
--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
`----------------------------------------------------------------´
Hero Wanders
2005-08-17 16:53:43 UTC
Permalink
Hallo!
Post by Ingo Pohlschneider
ich möchte ein verzeichnis via readdir auslesen.
Warum? glob() ist doch auch wunderbar, oder?

http://de2.php.net/en/glob

Viel Glück
und Grüße,
Hero
Loading...