Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: KK 23. 01. 2016, 12:32:04

Název: Jak získat názvy souborů a složek v php?
Přispěvatel: KK 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;
}
Název: Re:Jak získat názvy souborů a složek v php ?
Přispěvatel: rooobertek 23. 01. 2016, 13:04:59
odpoveď sa skrýva tu http://php.net/manual/en/class.recursivedirectoryiterator.php
Název: Re:Jak získat názvy souborů a složek v php ?
Přispěvatel: Kit 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.
Název: Re:Jak získat názvy souborů a složek v php ?
Přispěvatel: tisnik 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 ;)
Název: Re:Jak získat názvy souborů a složek v php ?
Přispěvatel: Kit 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.