Sử dụng PHP, làm thế nào tôi có thể tìm tất cả các tệp .php trong một thư mục hoặc thư mục con của nó (ở bất kỳ độ sâu nào)?Tìm tất cả các tệp .php trong thư mục đệ quy
8
A
Trả lời
11
chỉ cần thêm một cái gì đó như:
function listFolderFiles($dir){
$ffs = scandir($dir);
$i = 0;
$list = array();
foreach ($ffs as $ff){
if ($ff != '.' && $ff != '..'){
if (strlen($ff)>=5) {
if (substr($ff, -4) == '.php') {
$list[] = $ff;
//echo dirname($ff) . $ff . "<br/>";
echo $dir.'/'.$ff.'<br/>';
}
}
if(is_dir($dir.'/'.$ff))
listFolderFiles($dir.'/'.$ff);
}
}
return $list;
}
$files = array();
$files = listFolderFiles(dirname(__FILE__));
31
Bạn có thể sử dụng RecursiveDirectoryIterator
và RecursiveIteratorIterator
:
$di = new RecursiveDirectoryIterator(__DIR__,RecursiveDirectoryIterator::SKIP_DOTS);
$it = new RecursiveIteratorIterator($di);
foreach($it as $file) {
if (pathinfo($file, PATHINFO_EXTENSION) == "php") {
echo $file, PHP_EOL;
}
}
3
Rất muộn. Nhưng tôi nghĩ điều này sẽ hữu ích cho những người đến đây sau khi tìm kiếm.
tôi sửa đổi mã một chút tạo ra bởi supajason Bởi vì mã được cung cấp không trả về một kết quả phù hợp: Chủ yếu là do các thuật ngữ được sử dụng.
Tôi cũng đã thêm một số chức năng.
Hy vọng nó hữu ích!
<?php
define('ROOT', str_replace('\\', '/', getcwd()).'/');
///########-------------------------------------------------------------
///########-------------------------------------------------------------
///######## FUNCTION TO LIST ALL FILES AND FOLDERS WITHIN A CERTAIN PATH
///########-------------------------------------------------------------
///########-------------------------------------------------------------
function listFolderFiles(
$dir, /// **** TARGET DIRECTORY TO SCAN
$ReturnFlat = true, /// **** DEFAULT FLAT ARRAY TO BE RETURNED
$iteration = 0 /// **** INTERNAL PARAM TO COUNT THE FUNCTIONS OWN ITERATIONS
){
///########==================================================
///######## PREPARE ALL VARIABLES
///########==================================================
$dir = rtrim($dir, '/'); /// **** REMOVE TRAILING SLASH (* just for being pretty *)
$FilesFolders = scandir($dir); /// **** SCAN FOR ALL FILES AND FOLDERS
$NestedFolders = array(); /// **** THE NESTED FOLDERS BUILD ARRAY
static $TotalFiles = array(); /// **** THE TOTAL FILES ARRAY
///######## MAKE SURE THAT THE STATIC FILES ARE WILL BE CLEARED AFTER THE FIRST ITERATION
if($iteration === 0){
///######### RESET AS EMPTY ARRAY
$TotalFiles = array();
}
///########==================================================
///########==================================================
///######## RUN THROUGH ALL FILES AND FOLDERS
///########==================================================
foreach($FilesFolders as $File){
if(
/// **** IF NOT ONE DIR UP
($File != '.')
&&
/// **** IF NOT TWO DIRS UP
($File != '..')
){
///######### IF IT CONCERNS A FILE
if(is_dir($dir.'/'.$File) === true){
$iteration++; /// **** RAISE THE ITERATION
$NestedFolders[] = listFolderFiles($dir.'/'.$File, false, $iteration); /// **** EXECUTE THE FUNCTION ITSELF
}
///######### IF IT CONCERNS A FILE
else{
$TotalFiles[] = $dir.'/'.$File; /// **** ADD THE FILE TO THE TOTAL FILES ARRAY
$NestedFolders[] = $File; /// **** ADD THE FILE TO THE NESTED FOLDERS ARRAY
}
}
}
///########==================================================
///####### IF A FLAT LIST SHOULD BE RETURNED
if($ReturnFlat === true){
///########==================================================
///######## RETURN ALL FILES AND FOLDERS IN A FLAT ARRAY
///########==================================================
return($TotalFiles);
///########==================================================
}
///######## IF A NESTED LIST SHOULD BE RETURNED
else{
///########==================================================
///######## RETURN THE FILES AND FOLDERS IN A NESTED ARRAY
///########==================================================
return($NestedFolders);
///########==================================================
}
}
$files = listFolderFiles(ROOT, true); /// **** FLAT ARRAY
///$files = listFolderFiles(ROOT, false); /// **** NESTED ARRAY
echo print_r($files, true);
?>
Các vấn đề liên quan
- 1. TCL: Tìm kiếm đệ quy các thư mục con để nguồn tất cả các tệp .tcl
- 2. bash lặp qua tất cả tìm đệ quy trong thư mục con
- 3. Điều gì mở rộng cho tất cả các tệp trong thư mục hiện tại đệ quy?
- 4. Lấy danh sách tất cả các tệp trong thư mục (đệ quy)
- 5. Đệ quy lặp qua tất cả các tệp trong thư mục và thư mục con của nó trong Qt
- 6. Cách tạo một hàm đệ quy để sao chép tất cả các tệp và thư mục
- 7. Trong .Net, cách nhanh nhất để đệ quy tìm tất cả các tệp từ thư mục gốc là gì?
- 8. Cách đệ quy liệt kê tất cả các tệp và thư mục
- 9. Đọc các tệp Android.mk trong thư mục con đệ quy
- 10. Tìm tệp trong tất cả các thư mục có thể?
- 11. Tìm kiếm tập tin trong thư mục đệ quy
- 12. PHP đường dẫn thư mục đệ quy
- 13. Tìm tất cả các tệp trong thư mục có chuỗi hoặc mẫu trong tên tệp bằng PHP
- 14. Diff Một thư mục đệ quy, bỏ qua tất cả các tập tin nhị phân:
- 15. Xóa đệ quy các tệp và thư mục trong C#
- 16. Đệ quy đếm các tệp bằng PHP
- 17. Đệ quy in tất cả các tệp từ Vim
- 18. Tìm kiếm tệp đệ quy
- 19. Làm cách nào để liệt kê tất cả các tệp tga trong một thư mục (không đệ quy) trong Python?
- 20. Tìm kiếm tệp đệ quy bằng PowerShell
- 21. Làm thế nào để bạn lặp qua tất cả các tệp/thư mục đệ quy trong C++ chuẩn?
- 22. Đệ quy di chuyển tất cả các tệp của một loại cụ thể vào thư mục đích trong Bash
- 23. Xóa thư mục và tất cả các tệp/thư mục con
- 24. đệ quy thêm phần mở rộng tệp cho tất cả các tệp
- 25. danh sách PHP tất cả các file trong thư mục
- 26. Tìm kiếm đệ quy một thư mục trong Java
- 27. Sử dụng wget để đệ quy tìm thư mục có các tệp tùy ý trong đó
- 28. Làm thế nào để đệ quy đi qua tất cả các thư mục con và đọc tệp?
- 29. Đệ quy tìm tất cả tổ tiên cho trẻ
- 30. Thực hiện đệ quy trong các thư mục con
* "mã được cung cấp không trả lại kết quả nhất quán" * - ý của bạn là gì? Có gì khác biệt về hành vi thực hiện của bạn? –