Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]glob(), Pominięcie wyświetlanych folderów?
ZaXaZ
post 21.04.2014, 20:15:02
Post #1





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Jak mogę pominąć foldery wyświetlane z glob()? żeby sam plik był.
Mógłbym np. substr ale nie chce, jest coś szybszego? jakaś oficjalna funkcja co pomija foldery?

Ten post edytował ZaXaZ 21.04.2014, 20:19:55


--------------------
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
trueblue
post 21.04.2014, 20:33:17
Post #2





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


Google się kłania: http://stackoverflow.com/questions/1408437...glob-only-files


--------------------
Go to the top of the page
+Quote Post
ZaXaZ
post 21.04.2014, 20:54:38
Post #3





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Cytat(trueblue @ 21.04.2014, 21:33:17 ) *


wybacz, ale nie zrozumiałes :/...
wiem jak mogę wyświetlać pliki o danym rozszerzeniu z danego folderu.

ale funkcja wyświetla też folder jaki jest podany a ja chce zeby to np. tak działało że
glob("folder/folder2/folder3/*.jpg")

a to wyświetla zamiast
plik1.jpg
plik2.jpg
plik3.jpg
itd to
folder/folder2/folder3/plik1.jpg
folder/folder2/folder3/plik2.jpg
folder/folder2/folder3/plik3.jpg

lub coś źle robię.


--------------------
Go to the top of the page
+Quote Post
trueblue
post 21.04.2014, 20:58:56
Post #4





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


Źle zrozumiałem, bo wyglądało jakbyś chciał zwracać tylko pliki a nie foldery, i w linku jest rozwiązanie.
Jednak nadal nie rozumiem, bo w pierwszym poście piszesz, że chcesz pomijać foldery (w ścieżce jak rozumiem), a w powyższym jakoby Ci brakowało pełnej ścieżki.
Doklej ją po prostu do wyszukanych plików.


--------------------
Go to the top of the page
+Quote Post
ZaXaZ
post 21.04.2014, 21:02:37
Post #5





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Cytat(trueblue @ 21.04.2014, 21:58:56 ) *
Źle zrozumiałem, bo wyglądało jakbyś chciał zwracać tylko pliki a nie foldery, i w linku jest rozwiązanie.
Jednak nadal nie rozumiem, bo w pierwszym poście piszesz, że chcesz pomijać foldery (w ścieżce jak rozumiem), a w powyższym jakoby Ci brakowało pełnej ścieżki.
Doklej ją po prostu do wyszukanych plików.



Przyznaje, są dni gdy jestem śpiący i nie umiem się wysłowić biggrin.gif

no to jeszcze raz, szczegółowo i w skrócie:

podaje w glob ścieżkę do pliku, (działa)
jednak poza nazwą pliku wyświetla przed ścieżkę a ja chce żeby były same pliki, i też nie chce przez substr chyba że to będzie najszybsze...


--------------------
Go to the top of the page
+Quote Post
trueblue
post 21.04.2014, 21:51:37
Post #6





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


Zmień katalog chdir'em i wtedy użyj glob().


--------------------
Go to the top of the page
+Quote Post
ZaXaZ
post 21.04.2014, 23:10:33
Post #7





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Cytat(trueblue @ 21.04.2014, 22:51:37 ) *
Zmień katalog chdir'em i wtedy użyj glob().


coś chyba źle robię

  1. $katalog = glob('folder/folder1/*.php');
  2. foreach($katalog as $pliki)
  3. {
  4. chdir($pliki);
  5. echo $pliki."\r\n";
  6. }

Kod
Warning: chdir(): Not a directory (errno 20)


edit: jak dałem chdir pod $katalog nadal błąd ale inny, tak jak na dole pisałem działa tak jak chciałem, jednak nie wiem czy to najszybsze.

wpadłem na inny pomysł, tylko nie wiem czy szybszy od substr:
str_replace('folder/folder1', '', $pliki);

Ten post edytował ZaXaZ 21.04.2014, 23:20:32


--------------------
Go to the top of the page
+Quote Post
trueblue
post 22.04.2014, 07:42:37
Post #8





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


chdir przed wywołaniem glob(). Na: folder/folder2/folder3/


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 22.04.2014, 08:24:13
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


  1. end(explode('/', $plik));
Go to the top of the page
+Quote Post
ZaXaZ
post 22.04.2014, 08:25:19
Post #10





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Cytat(trueblue @ 22.04.2014, 08:42:37 ) *
chdir przed wywołaniem glob(). Na: folder/folder2/folder3/


czyli mam stworzyć pustą zmienna ("") lub z ścieżką? ("folder/folder2"),
piszę tak dlatego że dałem cały skrypt...
a po modydikacji tak by wyglądało:
  1. chdir('folder/folder1/');
  2. $katalog = glob('folder/folder1/*.php');
  3. //tu już było chdir i błąd jak zmienną $katalog
  4. foreach($katalog as $pliki)
  5. {
  6. //tu też chdir błąd jak się da zmienną $pliki
  7. echo $pliki."\r\n";
  8. }

i to już nic nie zwraca,
a mi chodzi o efekt jak to. Tylko szybszy jeśli istnieje:
  1. foreach(str_replace('folder/folder2/', '', glob('folder/folder2/*.php')) as $pliki) echo $pliki."\r\n";

@up napisał równo ze mną, zaraz sprawdze czy działa i jak tak to czy szybsze.

Ten post edytował ZaXaZ 22.04.2014, 08:36:15


--------------------
Go to the top of the page
+Quote Post
trueblue
post 22.04.2014, 08:48:02
Post #11





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


Jeśli zmieniłeś katalog, to szukasz względem niego, więc:
  1. $katalog = glob('*.php');


--------------------
Go to the top of the page
+Quote Post
ZaXaZ
post 22.04.2014, 09:12:38
Post #12





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Cytat(trueblue @ 22.04.2014, 09:48:02 ) *
Jeśli zmieniłeś katalog, to szukasz względem niego, więc:
  1. $katalog = glob('*.php');


ale ja to samo mam przecież tylko z podanymi folderami... tylko że z str_replace + foreach (tak jak u góry w moim poscie)


--------------------
Go to the top of the page
+Quote Post
trueblue
post 22.04.2014, 09:16:55
Post #13





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


Myślałem, że szukasz szybciej działającego rozwiązania.


--------------------
Go to the top of the page
+Quote Post
ZaXaZ
post 22.04.2014, 09:35:47
Post #14





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Cytat(trueblue @ 22.04.2014, 10:16:55 ) *
Myślałem, że szukasz szybciej działającego rozwiązania.


no bo szukam, ale ma działać tak jak moje tylko że lepiej:
moje działa tak że wyświetla wszystkie pliki php wraz z ścieżką która została pobrana, następnie zamienia wyswietlana ścieżkę na nic '' tylko że ja chce coś szybszego a to co napisałeś działa jak moje (tylko że nie można zejść folder ani dwa niżej bo nie został podany;
edit: oraz wyświetli z ścieżką pliki a chce bez.

Ten post edytował ZaXaZ 22.04.2014, 09:37:12


--------------------
Go to the top of the page
+Quote Post
trueblue
post 22.04.2014, 09:52:28
Post #15





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


glob nie działa rekurencyjnie i nie zagłębi się w podkatalogi.
A jeśli chcesz wyświetlać tylko nazwy plików z danego katalogu, to już wcześniej podałem Ci rozwiązanie:
  1. chdir('./katalog/');
  2. $katalog = glob('*.php');

wyświetli tylko pliki php, bez pełnej ścieżki, tylko z katalogu /katalog, bez zagłębiania się.


--------------------
Go to the top of the page
+Quote Post
ZaXaZ
post 22.04.2014, 09:55:59
Post #16





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Cytat(trueblue @ 22.04.2014, 10:52:28 ) *
glob nie działa rekurencyjnie i nie zagłębi się w podkatalogi.
A jeśli chcesz wyświetlać tylko nazwy plików z danego katalogu, to już wcześniej podałem Ci rozwiązanie:
  1. chdir('./katalog/');
  2. $katalog = glob('*.php');

wyświetli tylko pliki php, bez pełnej ścieżki, tylko z katalogu /katalog, bez zagłębiania się.


pisałem przecież że działa... ale wyświetla mi tak:

folder/folder2/plik.php
folder/folder2/plik2.php

proszę, jak możesz przetestuj mój skrypt...
bo zapewniam cię że działa.
tylko że ja chce żeby szybciej działało.


--------------------
Go to the top of the page
+Quote Post
trueblue
post 22.04.2014, 09:59:07
Post #17





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


A co podałeś jako parametr w chdir?


--------------------
Go to the top of the page
+Quote Post
ZaXaZ
post 22.04.2014, 10:01:00
Post #18





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Cytat(trueblue @ 22.04.2014, 10:59:07 ) *
A co podałeś jako parametr w chdir?


wcześniej jak testowalem to folder/folder2 ale jakiś tam błąd wyrzucalo


--------------------
Go to the top of the page
+Quote Post
trueblue
post 22.04.2014, 10:05:02
Post #19





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


W katalogu gdzie jest skrypt, jest również katalog /folder, a w nim /folder2.
W /folder/folder2 jest plik test.php
  1. chdir('folder/folder2');
  2. $katalog = glob('*.php');
  3. foreach($katalog as $pliki)
  4. {
  5. echo $pliki."\r\n";
  6. }

Wynik:
test.php


--------------------
Go to the top of the page
+Quote Post
MS500
post 29.05.2019, 12:37:47
Post #20





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 29.05.2019

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


Witajcie, mam pewien problem z funkcją glob. Na razie pracuję na serwerze lokalnym. Chciałabym napisać kod, który:
1) wyszuka wszystkie pliki z rozszerzeniem .txt ze wskazanego katalogu
2) sprawdzi czy wśród tych plików jest już taki który ma nazwę taką samą jak wartość przesłana za pomocą $_POST
3) jeśli nazwa jest taka sama, wyświetli komunikat, że taki użytkownik już istnieje, a jeśli nie ma wśród wyszukanych plików takiej nazwy, jak w $_POST, to zapisze nowy plik .txt o nazwie z $_POST

Na razie wkleję tylko kod, który ma opisywać punkt 1) czyli ma pokazywać wszystkie pliki z domyślnego katalogu public, jednak niestety nie działa (pokazuje błąd).
Co jest w nim nie tak?

  1. <?php
  2.  
  3. class Glob {
  4.  
  5. public function Search($filename) {
  6. foreach(glob("*.txt") as $filename);
  7. return $filename;
  8. }
  9.  
  10. }
  11.  
  12. $obiekt = new Glob;
  13. echo $obiekt->Search();
  14.  
  15. ?>


Ten post edytował MS500 29.05.2019, 12:40:46
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.06.2025 - 22:07