Jak získat názvy souborů a složek v php?

KK

Jak získat názvy souborů a složek v php?
« kdy: 23. 01. 2016, 12:32:04 »
Dobrý den, vytvářím jednu aplikaci v php (moje první) a narazil jsem na neřešitelný problém :( Potřebuji v zadaném adresáři projít celou strukturu včrtně podsložek a uložit názvy do pole. Hledal jsem jak na to a našel jsem způsoby jako je foreach nebo while, jenže v příkladech jsem našel jen to, co mi načte obsah jednoho adresáře. Neporadil by mi prosím někdo co mám špatně ? Děkuji

Kód: [Vybrat]
$dir = "/tmp";
$dh  = opendir($dir);
while (false !== ($filename = readdir($dh))) {
    $files[] = $filename;
}
« Poslední změna: 23. 01. 2016, 22:29:31 od Roman Bořánek »


Re:Jak získat názvy souborů a složek v php ?
« Odpověď #1 kdy: 23. 01. 2016, 13:04:59 »

Kit

Re:Jak získat názvy souborů a složek v php ?
« Odpověď #2 kdy: 23. 01. 2016, 13:07:53 »
To neděláš dobře, Jaromíre. Pokud bude ten adresářový strom trochu bohatší, tak se ti to vymstí.

Začátek docela ujde, jen by sis mohl trochu ujasnit pojmy. Neprocházíš složku, ale adresář. Neukládáš to do pole, ale do seznamu souborů $files.

Když narazíš na podadresář, tak bys ho měl rozpoznat funkcí is_dir() a rekurzívně projít. Znovu varuji, že si tím snadno spácháš DOS na vlastní server. Záleží pak na tom, zda chceš mít v paměti obraz toho adresářového stromu nebo plošný seznam všech souborů. Nedoporučuji ani jedno, viz výše. Obvykle je lepší nalezené názvy přímo zpracovat.

Dej si pozor na adresáře "." a ".." - určitě se nesnaž je procházet, je třeba je z dalšího zpracování vyloučit.

tisnik

Re:Jak získat názvy souborů a složek v php ?
« Odpověď #3 kdy: 23. 01. 2016, 13:26:49 »
viz Kit vyse. Taky si dej pozor na symlinky a hardlinky a z toho plynouci _ne_stromove struktury, no vsak sam uvidis (na druhou stranu mluvis o slozkach a ne o adresarich, tak mozna nebudes mit tento problem ;)

Kit

Re:Jak získat názvy souborů a složek v php ?
« Odpověď #4 kdy: 23. 01. 2016, 14:37:43 »
Obávám se, že hardlinky nemá jak rozpoznat, ale souhlasím, že ty softlinky je obvykle lepší z výsledků vyřadit.

Snažit se zobrazit celou strukturu je čato jen chybou návrhu aplikace. Obvykle stačí prohledat a zobrazit jen aktuální adresář. Zbytek se dá rozbalit např. ajaxem dle potřeby.