Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] jak wyświetlić nazwę pliku bez rozszerzenia
hiszpanespaniol
post 7.04.2008, 19:18:21
Post #1





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

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


witam. mam skrypt pobierający listę plików z podkatalogu i tworzący z niej menu. Problem polega na tym, że w linkach menu wyświetla mi się także rozszerzenie pliku, co oczywiście nie jest porządane. Podmieniałem już zmienną $klucz na wszystkie które się w skrypcie znajdują, ale albo wyświetla mi samo rozszeżenie, albo "array". Jest sposób na wyświetlenie samej nazwy plików, bez rozszeżenia?
  1. <?php
  2. $folder = dir('empik');
  3. while($plik = $folder->read()) {
  4. if (($plik != '.') AND ($plik != '..')) {
  5.  $nazwa = pathinfo($plik);
  6.  $pliki[$nazwa['basename']] = $nazwa['extension'];
  7.  $dodaj = true;
  8.  for($i=0;$i<count($typ);$i++)
  9. if ($typ[$i] == $nazwa['extension']) $dodaj = false;
  10. if ($dodaj == true) $typ[] = $nazwa['extension'];
  11.  }
  12. }
  13. $folder->close();
  14. for($i=0;$i<count($typ);$i++) {
  15.  echo '<ul>';
  16.  foreach($pliki as $klucz => $wartosc)
  17. if ($wartosc == $typ[$i]) echo '<li><a href="empik/' .$klucz. '">' .$klucz. '</a></li>';
  18.  echo '</ul>';
  19. }
  20. ?>


Ten post edytował hiszpanespaniol 7.04.2008, 19:24:25


--------------------
Go to the top of the page
+Quote Post
soulreaver1
post 7.04.2008, 19:37:20
Post #2





Grupa: Zarejestrowani
Postów: 59
Pomógł: 6
Dołączył: 1.04.2008

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


Jestem jeszcze słaby w php, ale ja robiłem to za pomocą polecenia substr (chodzi o to aby obciąć ostatnie 4 znaki nazwy pliku, gorzej gdy rozszerzenie jest 5 znaków np. .html).

to będzie coś takiego:

  1. <?php
  2. $namef = substr("$file", 0, -4);
  3. ?>
Go to the top of the page
+Quote Post
santalam
post 7.04.2008, 19:52:41
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 23.04.2005

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


Sprawdź:
  1. <?php
  2. $nazwapliku = explode('.' $nazwapliku); //rozdzielasz stringa po kropkach. Np. nazwa.pliku.html na $nazwapliku[0]=nazwa; 
  3.  // $nazwapliku[1]=pliku; $nazwapliku[2]=html; 
  4.  
  5. for(i=0; i<count($nazwapliku); i++) //count zlicza ilość wierszy w tablicy
  6. {
  7. if(i=0) $basename = $nazwapliku[i];  // dla i=0, czyli dla pierwszego wiersza z tablicy nie dodajemy kropki na pocz
  8. tku
  9. else $basename .= '.'.$nazwapliku[i];  // dla każdego kolejnego dodajmy kropkę
  10. }
  11.  
  12. echo $basename;  // powinno wyświetlić nazwa.pliku
  13. ?>


Powinno działać winksmiley.jpg

Ten post edytował santalam 7.04.2008, 19:54:16
Go to the top of the page
+Quote Post
batman
post 7.04.2008, 20:00:51
Post #4





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




  1. <?php
  2. $plik = 'nazwa.jpg';
  3. echo substr($plik, 0, strrpos($plik, '.'));
  4. // wyswietla: nazwa
  5. ?>


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
santalam
post 7.04.2008, 20:09:08
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 23.04.2005

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


batman :] zapomniałem że strrpos() wogóle istnieje winksmiley.jpg Skorzystaj z rozwiązania batamana winksmiley.jpg

Ten post edytował santalam 7.04.2008, 20:10:58
Go to the top of the page
+Quote Post
pablos02
post 7.04.2008, 20:11:50
Post #6





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

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


Może dla początkójących takie zadanie jest trudne ale wystarzy tylko trochę nad tym pomyśleć:)
Go to the top of the page
+Quote Post
webdice
post 7.04.2008, 20:23:39
Post #7


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




  1. <?php
  2.  
  3. $folder = dir('empik');
  4.  
  5. while ($plik = $folder->read ())
  6. {
  7. if (($plik != '.') AND ($plik != '..'))
  8. {
  9. $file = pathinfo ($plik);
  10.  
  11. print $file['filename'] . '<br />';
  12. }
  13. }
  14.  
  15. ?>
Go to the top of the page
+Quote Post
hiszpanespaniol
post 7.04.2008, 20:37:25
Post #8





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

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


webdicepl dzięki za pomoc. widać PHP jak matematyka - najprostsze rozwiązania okazują się najlepsze smile.gif. Odrobinę zmieniłem skrypt w ten sposób żeby wyświetlało linki, pliki docelowe miały rozszerzenie i żeby to było menu (oczywiście do obróbki w css):
  1. <?php
  2. $folder = dir('empik'); 
  3. echo '<ul>';
  4. while ($plik = $folder->read ())
  5. { 
  6. if (($plik != '.') AND ($plik != '..'))
  7. {
  8. $file = pathinfo ($plik);
  9. echo'<li><a href="empik/' .$plik. '">' .$file['filename']. '</a></li>';
  10.  echo '</ul>';
  11. }
  12. }
  13. ?>


--------------------
Go to the top of the page
+Quote Post
webdice
post 7.04.2008, 20:57:36
Post #9


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




  1. <?php
  2. echo '</ul>';
  3. ?>


Echo daj za klamrą do pętli.
Go to the top of the page
+Quote Post
hiszpanespaniol
post 7.04.2008, 23:52:53
Post #10





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

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


wykorzystałem ten sposób w tworzeniu szablonu. Teraz niestety menu mi nie działa (wyświetla dobrze, linki tworzy dobre, a jednak za każdym razem ładuje się strona główna). Nie wiem w czym problem, bo zmienna GET jest przekazywana prawidłowo. Może powodem jest to, że menu include'owane jest w pliku index.php, nie wiem. Może ktoś pomóc? nakierować?

daję link do spakowanego szablonu
szablon.zip


--------------------
Go to the top of the page
+Quote Post
isso
post 8.04.2008, 00:05:58
Post #11





Grupa: Zarejestrowani
Postów: 296
Pomógł: 32
Dołączył: 3.01.2005

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


  1. <?php
  2. $strona = $_GET['wyswietl'];
  3. if (is_file("podstrony/$strona.html"))
  4. { 
  5. include("gora.html");
  6. include("podstrony/".$strona.".html");
  7. include("dol.html");
  8. }
  9. else
  10. {
  11. include("gora.html");
  12. include("podstrony/glowna.html");
  13. include("dol.html");
  14. }
  15. ?>


wklej to zamiast aktualnego indeksu ;-) u mnie działa smile.gif


--------------------
Go to the top of the page
+Quote Post
hiszpanespaniol
post 8.04.2008, 00:11:29
Post #12





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

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


człowiek jest czasem ślepy jak.... jak ślepiec smile.gif głupie przeoczenie. Dziękuję


--------------------
Go to the top of the page
+Quote Post
guitarnet.pl
post 8.04.2008, 04:00:11
Post #13





Grupa: Zarejestrowani
Postów: 74
Pomógł: 4
Dołączył: 7.03.2008

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


zerknij tutaj, bardzo prosta metoda dająca gwarancję że otrzymasz to co chcesz

http://skrypta.pl/porada/ja_wyswietlic_naz...ozszerzenia/104

pamiętaj że korzystanie z strpos() czy substr() poprzez obcinanie względem kropki zakończy się nieoczekiwanym rezultatem jesli plik ma więcej niż jedna kropkę!


--------------------
Skrypty php, ajax, javascript
Go to the top of the page
+Quote Post
hiszpanespaniol
post 8.04.2008, 23:58:32
Post #14





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

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


kolejny problem: nie mam pojęcia na jakiej zasadzie (wg czego) sortowane są wyniki. Czyli jak jest sortowana lista plików. Żeby chociaż alfabetycznie. Nie interesuje mnie dzielenie według rozszerzenia, bo wszystkie pliki to *.html. W manualu nie znalazłem odpowiedzi (czytając o readdir). Chcę uzyskać menu sortowane alfabetycznie lub wg daty modyfikacji pliku.
Oto skrypt ten sam co wcześniej:

  1. <?php
  2. $folder = dir('empik'); 
  3. echo '<ul>';
  4. while ($plik = $folder->read ())
  5. { 
  6. $zamiana_znakow = str_replace("-"," ",$plik);
  7. if (($zamiana_znakow != '.') AND ($zamiana_znakow != '..'))
  8. { 
  9. $file = pathinfo ($zamiana_znakow);
  10. echo'<li><a href="index.php?wyswietl=' .$file['filename']. '">' .$file['filename']. '</a></li>';
  11. }
  12. }  echo '</ul>';
  13. ?>

(W skrypcie dodałem jedynie możliwość wyświetlania kilkuwyrazowych pozycji w menu. spacja w menu zamiast myślnika w nazwie pliku)

Możliwe, że problem ma związek z tym, że . i .. były wyświetlane gdzieś w środku listy plików a teraz je pomija skrypt.


--------------------
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 Wersja Lo-Fi Aktualny czas: 7.05.2025 - 05:13