Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przeszukiwanie zmeinnej
Forum PHP.pl > Forum > PHP
Asmox
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ć?
wookieb
Kod
if(strpos($nazwa,'index.')!==false)

Jeżeli to nie wystarczy to musisz użyc preg_matcha
kefirek
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. ?>
Asmox
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.
wookieb
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
}
Asmox
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
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.