Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Listowanie plików ze wszystkich katalogów
jurajska
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 15.12.2015

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


Cześć,
jestem zupełnie początkujący.
Mam skrypt który listuje pliki ze wszystkich katalogów. To czego w nim brakuje to pokazywania daty stworzenia, modyfikacji, coś na wzór plików "index of /" oraz wstępnego ich posortowania po tej dacie.
Oprócz tego, nie działają poprawnie odnośniki do tych plików, jeżeli zawierają polskie litery - lecz to jest wtórny problem.
Poproszę o Waszą pomoc. Z góry dziękuję, MO.
Poniżej skrypt:

  1. <?php
  2. function GetAllLinksFromDir($dir, &$array) {
  3. if($dir[strlen($dir) - 1] != '/') $dir .= '/';
  4. $hand = opendir($dir);
  5. while($file = readdir($hand))
  6. if(is_file($dir.$file))
  7. $array[] = '<a href="'.$dir.$file.'">'.$dir.$file.'</a>';
  8. elseif(is_dir($dir.$file) && $file != '.' && $file != '..')
  9. GetAllLinksFromDir($dir.$file, $array);
  10. closedir($hand);
  11. }
  12. $linki = array();
  13. GetAllLinksFromDir('.', $linki);
  14. ksort($linki);
  15. echo join("<br>\n", $linki);
  16. ?>
  17.  
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jurajska
post
Post #2





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 15.12.2015

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


Wszystko śmiga jak należy. Poniżej gotowiec dla potomnych.
Bardzo dziękuję wszystkim za pomoc.
Pozdrawiam,
MO.

  1. <body>
  2. <?php
  3. $search_path = './';
  4. $display = array('pdf'); // Zmienna dla wyświetlania konkretnego typu pliku
  5. $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($search_path));
  6. $data = array();
  7. foreach($files as $file) {
  8. if ($file->isDir()) {continue;}
  9. $time = DateTime::createFromFormat('U', filemtime($file->getPathname()));
  10. // no need to explode the time, just make it a datetime object
  11. // if(in_array($file->getExtension(), $display) && $time > new DateTime('2014-01-15')) { // is PHP and is greater than jan 15 2014
  12. $data[] = array('filename' => $file->getPathname(), 'time' => $time->getTimestamp()); // push inside
  13.  
  14. // }
  15. }
  16. usort($data, function($a, $b){ // sort by time latest
  17. return $b['time'] - $a['time'];
  18. });
  19.  
  20.  
  21. foreach ($data as $key => $value) {
  22.  
  23. $time = date('Y-m-d H:i:s', $value['time']);
  24.  
  25. echo "
  26. <span style='color: red;'.face='Tahoma, sans-serif'>
  27. <b style='color: green;'>$time</b> <a href=\"http://mojadomena.pl/$value[filename]\"</a> $value[filename]
  28.  
  29. </span>
  30. <br/>
  31. ";
  32. }
  33. ?>
  34. </body>
  35.  


Witam ponownie,
listowanie działa wyśmienicie. Jest jednak problem z wyświetlaniem polskich znaków w nazwach plików, które były skopiowane na serwer z windowsa za pomocą klienta FTP.
Takie nazwy mają bodajże kodowanie Windows-1250 i w żaden sposób nie potrafię tego listowania przekonwertować do UTF-8.
Z góry dziękuję za sprawdzone w powyższym skrypcie podpowiedzi w jaki sposób konwertować listę plików.
MO.
Go to the top of the page
+Quote Post

Posty w temacie
- jurajska   [PHP]Listowanie plików ze wszystkich katalogów   15.12.2015, 11:07:27
- - Pyton_000   Zamiast takich potworków lepiej użyć tego: [PHP] ...   15.12.2015, 11:17:50
- - jurajska   Dziękuję za szybką odpowiedź. Rzeczywiście, składn...   15.12.2015, 11:40:50
- - Pyton_000   http://stackoverflow.com/a/26602416/3732803   15.12.2015, 11:56:30
- - jurajska   Świetne, lecz listuje mi jedynie zawartość bieżące...   15.12.2015, 13:08:30
- - Pyton_000   jak dla mnie to to działa.listuje wszystkie z podk...   15.12.2015, 13:30:01
- - jurajska   Jest już OK. Mój wzrok zbłądził i nie zauważył, że...   15.12.2015, 16:00:18
- - viking   W foreach: [PHP] pobierz, plaintext if ($file-...   15.12.2015, 16:17:21
- - jurajska   Wszystko śmiga jak należy. Poniżej gotowiec dla po...   28.12.2015, 07:45:13
- - Pyton_000   [PHP] pobierz, plaintext $result = iconv('CP12...   28.12.2015, 07:53:33
- - jurajska   Próbowałem, nie zamienia. Ale biorąc pod uwagę że...   28.12.2015, 08:15:38
- - Pyton_000   Nie wiesz jaka zmienna odpowiada za nazwę pliku? ...   28.12.2015, 08:45:38
- - jurajska   Zrobiłem, niestety nie zamienia znaków. Również po...   28.12.2015, 10:00:36
- - Pyton_000   kod   28.12.2015, 10:25:22
- - jurajska   [PHP] pobierz, plaintext <body><?php $res...   28.12.2015, 10:48:08
- - Pyton_000   [PHP] pobierz, plaintext foreach($files as $fi...   28.12.2015, 10:53:54
- - jurajska   Dzięki za pomoc. Pomogło i tak i nie, a mianowici...   28.12.2015, 11:45:40
- - breadi   Witam, zastosowałem się do powyższego kodu, wszyst...   26.12.2016, 13:53:09
- - Pyton_000   basename   27.12.2016, 10:26:20


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

 



RSS Aktualny czas: 15.10.2025 - 19:30