Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przeszukiwanie zmeinnej
Asmox
post
Post #1





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


Mam pewien kod, który służy mi do chodzenia po folderach:
  1. <?php
  2. function makemenu($param){
  3. echo "<a href=\"//localhost/gra_w_foldery/\">Strona Główna</a><br />";
  4.  
  5. $dir = './';
  6. $fd = opendir($dir); //Wchodzenie w katalog
  7.  
  8. $katalogi = array();
  9. $pliki = array(); //Stworzenie tablic do przechowywania nazw plików i folderów
  10.  
  11. while (($plik = readdir($fd)) !== false) {
  12. if ($plik != '.' && $plik != '..') { //Tu chciałbym dodać jeszcze jeden warunek
  13. if (is_file($dir.$plik)) { //Jeśli złapany jest plik dodajemy go do listy plików
  14. $pliki[] = $plik;
  15. }
  16.  
  17. if (is_dir($dir.$plik)){ //Jeśli złapany jest katalog, dodajemy go do listy katalogów
  18. $katalogi[] = $plik;
  19. }
  20.  
  21. }
  22. }
  23. sort($pliki); //Sortowanie
  24. sort($katalogi);
  25.  
  26. switch ($param){
  27. case 'all':
  28. echo ("<a href=\"../\">Katalog Wyżej</a><br />");
  29. echo ("<b>Katalogi:</b><br />");
  30. foreach ($katalogi as $nazwa) echo("<a href=\"$nazwa/\">$nazwa</a><br />");
  31. echo ("<b>Pliki:</b><br />");
  32. foreach ($pliki as $nazwa) echo("$nazwa<br />");
  33. break;
  34. /************************************************************************/
  35. case 'pliki':
  36. echo ("<a href=\"../\">Katalog Wyżej</a><br />");
  37. foreach ($pliki as $nazwa) echo("<a href=\"$nazwa\">$nazwa</a><br />");
  38. }
  39. }
  40. ?>


Chciałbym dodać sprawdzenie, czy w złapanym elemencie jest słowo index. Niestety to nie może być każdy index. Chciałbym, aby w liście plików nie pojawił się plik index (dowolny index, który ma rozszerzenie, czyli kropkę). Ale chciałbym też, aby jeśli znajdzie się np. katalog "indexowanie", aby on normalnie się pokazał.
Jak to zrobić?


--------------------
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Kod
if(strpos($nazwa,'index.')!==false)

Jeżeli to nie wystarczy to musisz użyc preg_matcha

Ten post edytował wookieb 22.02.2009, 12:12:34


--------------------
Go to the top of the page
+Quote Post
kefirek
post
Post #3





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


Albo
  1. <?php
  2. $plik = strtolower(substr($plik, 0, strrpos($plik, ".")))
  3. ?>


Czyli robisz cos takiego
  1. <?php
  2. if(strtolower(substr($plik, 0, strrpos($plik, "."))) !== 'idndex') { $pliki[] = $plik; }
  3. ?>


Co do katalogu to chyba tak
  1. <?php
  2. if (is_dir($dir.$plik)){ //Jeśli złapany jest katalog, dodajemy go do listy katalogów
  3. if($plik !== 'indexowanie') {$katalogi[] = $plik;}
  4. }
  5. ?>


Ten post edytował kefirek 22.02.2009, 12:30:38
Go to the top of the page
+Quote Post
Asmox
post
Post #4





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


Kefirek, twój sposób jest trochę skomplikowany i długi, a mi zależy na w miarę krótkim kodzie jeśli się da. Wookieb nie wiem dlaczego, ale przy Twoim pomyśle, żeby działał musi być nie !== FALSE, ale !== 0.


--------------------
Go to the top of the page
+Quote Post
wookieb
post
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(Asmox @ 22.02.2009, 13:38:23 ) *
ale przy Twoim pomyśle, żeby działał musi być nie !== FALSE, ale !== 0.

Nie no jest dobrze tylko moja pomyłka jest taka ze
Kod
if(strpos($nazwa,'index.')!==false)
{
// plik niedozwolony
}
if(strpos($nazwa,'index.')===false)
{
// plik dozwolony
}


Ten post edytował wookieb 22.02.2009, 16:36:17


--------------------
Go to the top of the page
+Quote Post
Asmox
post
Post #6





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


Heh rozumiem. A teraz coś trochę innego....
Chciałbym utworzyć funkcję, która określałaby miejsce w hierarchii pliku/folderu podanego w ścieżce. Mógłbym wykorzystać do tego strpos()" title="Zobacz w manualu PHP" target="_manual, jak myślicie?
No i jeszcze jedna rzecz... Bo nie wiem, czy przy podawaniu ścieżki ukośnik też jest na końcu/na początku.
Żeby odczytywać ścieżkę względem serwera używałbym $_SERVER['PHP_SELF'].
Może wam ułatwi zrozumienie o co mi chodzi hierarchia:
Kod
/index.html
/kursy
   |
   ---/kursy/html
   |      |
   |      ---index.html
   |      |
   |      ---kurs-html-1.html
   |      |
   |      ---kurs-html-2.html
   |
   ---/kursy/php
   |      |
   |      ---index.html
   |      |
   |      ---kurs-php-1.html
   |      |
   |      ---kurs-php-2.html
   |
   ---/kursy/css/
      |
      ---index.html
      |
      ---kurs-css-1.html
      |
      ---kurs-css-2.html


Ten post edytował Asmox 23.02.2009, 06:51:10


--------------------
Go to the top of the page
+Quote Post

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 Aktualny czas: 21.08.2025 - 17:47