Mam folder. Chcę umieścić wszystkie pliki w tym folderze w tablicy, a następnie chcę je wszystkie wyświetlić w pętli foreach.
Jaki jest najlepszy sposób na zrobienie tego?
Dzięki!Lista zawartości katalogu (php)
6
A
Odpowiedz
15
scandir jest to, czego szukasz http://php.net/manual/en/function.scandir.php
<?php
$dir = '/tmp';
$files1 = scandir($dir);
print_r($files1);
?>
też użyć kombinacji opendir i readdir http://php.net/manual/en/function.readdir.php
1
nie dostać dużo łatwiej niż tym
http://ca3.php.net/manual/en/function.scandir.php
Nie zapomnij odfiltrować ukrytych i nadrzędnych katalogów (zaczynają się od kropki) na linux.
0
EDIT: Odpowiedź dwich jest lepsza. Zostawię to tylko dla informacji.
<?php
if ($handle = opendir('/path/to/dir')) {
echo "Directory handle: $handle\n";
echo "Files:\n";
while (false !== ($file = readdir($handle))) {
echo "$file\n";
}
closedir($handle);
}
?>
Mam nadzieję, że to pomoże.
-Alberto
1
Alternatywa:
define('PATH', 'files/');
$filesArray = array();
$filesArray = glob(PATH . '*', GLOB_ONLYDIR);
Metoda ta pozwala określić/filtrować według typu pliku. NP,
define('PATH', 'files/');
define('FILE_TYPE', '.jpg');
$filesArray = array();
$filesArray = glob(PATH . '*' . FILE_TYPE, GLOB_ONLYDIR);
Można również uzyskać pełną nazwę ścieżki do pliku poprzez usunięcie parametru „GLOB_ONLYDIR”
1
To działa dla plików i folderów podfolderów też. Zwróć listę folderów i listę plików z ich ścieżką.
$dir = __DIR__; //work only for this current dir
function listFolderContent($dir,$path=''){
$r = array();
$list = scandir($dir);
foreach ($list as $item) {
if($item!='.' && $item!='..'){
if(is_file($path.$item)){
$r['files'][] = $path.$item;
}elseif(is_dir($path.$item)){
$r['folders'][] = $path.$item;
$sub = listFolderContent($path.$item,$path.$item.'/');
if(isset($sub['files']) && count($sub['files'])>0)
$r['files'] = isset ($r['files'])?array_merge ($r['files'], $sub['files']):$sub['files'];
if(isset($sub['folders']) && count($sub['folders'])>0)
$r['folders'] = array_merge ($r['folders'], $sub['folders']);
}
}
}
return $r;
}
$list = listFolderContent($dir);
var_dump($list['files']);
var_dump($list['folders']);
Powiązane problemy
- 1. Lista wszystkich plików w jednym katalogu PHP
- 2. lista PHP wszystkie pliki w katalogu
- 3. lista PHP określonych plików w katalogu
- 4. Python boto, lista zawartości konkretnego katalogu w wiadrze
- 5. .gitignore Biała lista w katalogu i jej zawartości
- 6. Lista dostawców zawartości Androida
- 7. Lista zawartości pamięci podręcznej lakierów?
- 8. Lista tylko numerycznych nazw plików w katalogu
- 9. Ignorowanie zawartości już zapisanego katalogu?
- 10. Lista wszystkich folderów w katalogu
- 11. Lista w katalogu (Model) Factory
- 12. Lista tylko plików w katalogu?
- 13. Pobieranie zawartości katalogu według daty modyfikacji zamówienia
- 14. Python urllib pobieranie zawartości katalogu online
- 15. Pętla na pustej zawartości katalogu w Bash
- 16. Pakiet nuget z symbolami brakuje "zawartości" katalogu
- 17. lista Funkcja pliku php
- 18. $ _SESSION Lista PHP
- 19. PHP ścieżka katalogu rekurencyjne
- 20. PHP usunąć zawartość katalogu
- 21. Apache, PHP Niepoprawna długość zawartości
- 22. Lista plików w katalogu bieżącego pliku JAR
- 23. Lista plików w katalogu przy użyciu html
- 24. Lista dostępnych czcionek w PHP
- 25. PHP Pobierz nazwę bieżącego katalogu
- 26. Jak zmienić typ zawartości w php?
- 27. Zdobycie zawartości div z PHP DOM
- 28. Pobieranie zawartości pliku z PHP FTP
- 29. Jak uzyskać typ zawartości pliku w PHP?
- 30. Accurev: Jak ignorować zawartości katalogu, ale nie katalog
Myślę, że jest to lepsze niż "readdir", nawet jeśli jest to tylko PHP 5. +1 z powodu przykładu. – Donovan