Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]is_dir co nie dokonca dziala
Forum PHP.pl > Forum > Przedszkole
gsk
  1. public static function listFiles($dir)
  2. {
  3. if(is_dir($dir)){
  4. $handle = opendir($dir);
  5. while (($file = readdir($handle)) !== false)
  6. {
  7. if(!is_dir($file)){
  8. $files[] = $file;
  9. }
  10. }
  11. closedir($handle);
  12. }
  13. return $files;
  14. }


Napisalem sobie taka prosta funkcje, ktora tworzy mi tablice plikow w katalogu. I pytanie czemu pozniej w tej tablicy mam dostepne rowniez katalogi, jak wyswietlam same pliki.
CyberDuck_
Bo w warunku Masz readdir ... Poczytaj manuala -> readdir .
Tobie raczej przyda sie chyba is_dir .
gsk
w warunku mam is_dir... i sprawdzam nim czy dany plik jest katalogiem jezeli tak to omijam
cojack
  1. if(!is_dir($file)){
  2. $files[] = $file;
  3. }

zamień na:
  1. if ($file != "." && $file != "..") {
  2. $files[] = $file;
  3. }


nawet w manualu masz taki przykład...
gsk
is_dir usuwa mi '.' i '..' tylko o dziwo nie usuwa katalogu ktory tam jest oprocz plikow...
cojack
Bo ten katalog jest directory, ha! Czyli ścieżką, lepiej sprawdzać is_file.
gsk
nie rozumiesz... smile.gif heheh... mam katalog x, ktory jest sciezka w nim mam pliki oraz jeden katalog y.. smile.gif teraz uzywam !is_dir i wycina mi tylko . i .. a katalog y zostaje smile.gif pozdrawiam biggrin.gif
potreb
  1. if ($file != "." && $file != ".." && !is_dir($file)) {


Zainteresuj się lepiej DirectoryIterator
http://blogs.techrepublic.com.com/programm...elopment/?p=417
gsk
potreb smile.gif jak juz pisalem wyzej smile.gif . i .. sa wycinane przez samo !is_dir smile.gif natomiast to samo !is_dir nie usuwa mi katalogu w tej sciezce smile.gif is_file natomiast wyswietla w tym przypadku tylko jeden plik z calej listy.. dlatego pytam na forum, bo wydaje mi sie to dosyc dziwne smile.gif
potreb
Pokaż jeszcze raz kod i przykład twoich ścieżek.
cojack
gsk masz rację coś rzeczywiście jest skopane bo u mnie też katalogi łapie...
potreb
U mnie normalnie działa
  1. <?php
  2. function listFiles($dir)
  3. {
  4. if(is_dir($dir)){
  5. $handle = opendir($dir);
  6. while (($file = readdir($handle)) !== false)
  7. {
  8. if(!is_dir($file)){
  9. $files[] = $file;
  10. }
  11. }
  12. closedir($handle);
  13. }
  14. return $files;
  15. }
  16.  
  17. print_r(listFiles('./'));
  18. ?>
gsk
  1. + katalog x
  2. |---- katalog y
  3. |---- plik1
  4. |---- plik2
  5. |---- plik3

listuje katalog x i oprocz plikow widze katalog y smile.gif juz latwiej nie potrafie, hehehe...
-nick-
podaj pelna sciezke w is_dir
abort
Tak na marginesie: możesz skorzystać z is_file - to Ci złapie na 100% tylko pliki. Bo jak na uniksie trafisz na linka symbolicznego, to warunek !is_dir będzie spełniony (a nie powinien). Dlatego lepiej is_file, bo nie złapie ani linka symbolicznego, ani katalogu.
qrooel
To było w 2009 roku.
abort
LOL. No cóż, ktoś odświeżył wątek, to i się nabrałem. smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.