Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Katalogi/pliki
desavil
post
Post #1





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


Cześć.
W jaki sposób mogę uzyskać listę plików i katalogów w danym katalogu?
Pytanie może brzmi dosyć dziwnie, ale wyjaśnię o co chodzi.

Mam dajmy na to katalog o nazwie (to jego zawartość ma być wyświetlana): dir
W tym katalogu mam pliki z rozszerzeniem .txt oraz inne katalogi i w nich również znajdują się pliki .txt oraz inne katalogi.
W jaki sposób mogę uzyskać listę tych katalogów oraz ich zawartość? Jeżeli chodzi o zawartość, chodzi mi o wyświetlanie tylko konkretnych typów plików.

Czyli np. skrypt wyświetli mi w ten sposób:
Cytat
dir/plik1.txt
dir/plik2.txt
dir/dir2/plik1.txt
dir/dir2/dir3/plik1.txt
dir/dir3/plik.txt
itd..

Ma wyświetlać tylko pliki określone w skrypcie formaty ich.

Pozdrawiam, i dziękuję za pomoc.


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
Daiquiri
post
Post #2





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Skorzystaj z chociażby opendir czy readdir i w zależności od potrzeb schodź niżej w hierarchii. Pobranie rozszerzenia zależy od sposobu listowania, ale możesz wykorzystać nawet explode dla nazwy pliku.
Go to the top of the page
+Quote Post
desavil
post
Post #3





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


To to wiem.. :/


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
Daiquiri
post
Post #4





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




No to w czym masz problem?
Go to the top of the page
+Quote Post
desavil
post
Post #5





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


Z napisaniem tego, na takiej zasadzie jak opisałem. tongue.gif


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
mortus
post
Post #6





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Trzeba sobie funkcję napisać, która będzie rekurencyjnie przeszukiwać katalog w poszukiwaniu plików danego typu, a jeśli znajdzie podkatalog, to wykona to samo dla tego podkatalogu. Użyłbym tutaj funkcji glob.
Go to the top of the page
+Quote Post
desavil
post
Post #7





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


Nom próbuję, ale nie umiem tego zrobić, a bardzo tego potrzebuję tongue.gif
Byłbym wdzięczny gdyby koś udzielił mi konkretnej pomocy.

Funkcją glob zrobiłem takie coś:
  1. foreach(glob('katalog/{*.txt}', GLOB_BRACE) as $file)
  2. echo $file;

Ale to wyświetla tylko pliki znajdujące się w katalogu głównym (katalog).
Chciałbym, aby wyświetlało również zawartości podkatalogów oraz podkatalogów w podkatalogach aż do końca.
Nie mam pomysłu jak takie coś uzyskać :/

sad.gif


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
ber32
post
Post #8





Grupa: Zarejestrowani
Postów: 332
Pomógł: 22
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


Może to pomoże?

  1. $katalogi = glob("*.txt");
  2. if(count($katalogi) > 0)
  3. {
  4. foreach($katalogi as $wypisz)
  5. {
  6. // raz dwa trzy
  7. echo $wypisz;
  8. }
  9. }


--------------------
Go to the top of the page
+Quote Post
desavil
post
Post #9





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


@up
no chyba nie :/
To co podałeś wgl. nie działa, i nie ma nawet ścieżki do katalogu.


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
ber32
post
Post #10





Grupa: Zarejestrowani
Postów: 332
Pomógł: 22
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


Spróbuj zrobić z tego co ci napisaliśmy funkcje używając opendir i glob
Np.
  1.  
  2. function katalogi($katalogi){
  3.  
  4. /// tu kod
  5. }


--------------------
Go to the top of the page
+Quote Post
desavil
post
Post #11





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


ber32, chyba mylisz pojęcia i nie wiesz co do czego służy.
Tak samo z pierwszą Twoją wypowiedzią. Wzięty pierwszy lepszy przykład z manuala, nawet nie sprawdzony przez Ciebie.

Ten post edytował desavil 21.09.2011, 19:11:36


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
ber32
post
Post #12





Grupa: Zarejestrowani
Postów: 332
Pomógł: 22
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


Dokładnie z manuala
bo tam jest odpowiedz

Może troche namieszałem "Przepraszam"

A co ty proponujesz


--------------------
Go to the top of the page
+Quote Post
mortus
post
Post #13





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Panie, to są przecież podstawy podstaw. Radzę się douczyć (poczytaj o rekurencji).
Rozwiązanie:
  1. <?php
  2. function search_dir($path, $file_type) {
  3. $files = glob($path.DIRECTORY_SEPARATOR.'*');
  4. foreach($files as $file) {
  5. if($file != '.' && $file != '..') {
  6. if(is_dir($file)) {
  7. search_dir($file, $file_type);
  8. }
  9. if(pathinfo($file, PATHINFO_EXTENSION) == $file_type) {
  10. echo $file.'<br />';
  11. }
  12. }
  13. }
  14. }
  15. // przykład
  16. search_dir('.', 'txt');
  17. ?>


@down: Pogrubiłem to co najważniejsze.

Ten post edytował mortus 21.09.2011, 19:22:41
Go to the top of the page
+Quote Post
desavil
post
Post #14





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


Dzięki, za konkretną i oczekiwaną prze-zemnie odpowiedź :]

@edit

Chciałbym w tym kodzie jeszcze uzyskać, aby zamiast echo było return.
Próbowałem to zamienić, ale nie chce coś działać.


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
mortus
post
Post #15





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


To trzeba zapisywać listę plików do tablicy (trochę zabawy jest, bo trzeba pamiętać o rekurencji) i zwrócić tablicę.
  1. <?php
  2. function search_dir($path, $file_type) {
  3. $return = array();
  4. $files = glob($path.DIRECTORY_SEPARATOR.'*');
  5. foreach($files as $file) {
  6. if($file != '.' && $file != '..') {
  7. if(is_dir($file)) {
  8. $return = array_merge($return, search_dir($file, $file_type));
  9. }
  10. if(pathinfo($file, PATHINFO_EXTENSION) == $file_type) {
  11. $return[] = $file;
  12. }
  13. }
  14. }
  15. return $return;
  16. }
  17. // przykład
  18. $files = search_dir('tmp', 'txt');
  19. echo implode("<br />", $files);
  20. ?>
Go to the top of the page
+Quote Post
desavil
post
Post #16





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


I ostatnią rzecz jaką chciałbym w tym skrypcie jeszcze uzyskać to wyświetlenie samych nazw katalogów (bez plików).
Wszystko tak samo, tylko bez plików, nazwy katalogów same.

Czyli jak mam strukturę katalogów taką:
Cytat
/dir/katalog
/dir/katalog/dir1
/dir/katalog_a
/dir/cos/a


To wyświetli mi to w taki sam sposób ze ścieżką tak jak w przypadku powyżej tylko bez plików.

smile.gif


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
Daiquiri
post
Post #17





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Teraz to już chyba żartujesz. Zamykam, to nie jest dział "napiszemy wszystko za Ciebie".

Zapomniałabym: jeżeli czekasz na gotowe rozwiązanie - napisz, a przeniosę temat do działu giełda.
Powód edycji: [Daiquiri]:
Go to the top of the page
+Quote Post

Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 15:44