返回指定文件夹中所有文件的列表,以及最多100级深度的所有子目录。
原型
list_files( string $folder = '', int $levels = 100, array $exclusions = array() )
描述
递归的深度可以由$ levels参数控制。
参数
$folder
(string)
(Optional)
文件夹的完整路径。
$levels
(int)
(Optional)
要遵循的文件夹级别,默认值为100(PHP循环限制)。
$exclusions
(array)
(Optional)
要跳过的文件夹和文件列表。
返回值
(bool|array)
失败时为假,其他文件数组
源文件
路径:wp-admin/includes/file.php
<?php
...
function list_files( $folder = '', $levels = 100, $exclusions = array() ) {
if ( empty( $folder ) ) {
return false;
}
$folder = trailingslashit( $folder );
if ( ! $levels ) {
return false;
}
$files = array();
$dir = @opendir( $folder );
if ( $dir ) {
while ( ( $file = readdir( $dir ) ) !== false ) {
// Skip current and parent folder links.
if ( in_array( $file, array( '.', '..' ), true ) ) {
continue;
}
// Skip hidden and excluded files.
if ( '.' === $file[0] || in_array( $file, $exclusions, true ) ) {
continue;
}
if ( is_dir( $folder . $file ) ) {
$files2 = list_files( $folder . $file, $levels - 1 );
if ( $files2 ) {
$files = array_merge($files, $files2 );
} else {
$files[] = $folder . $file . '/';
}
} else {
$files[] = $folder . $file;
}
}
}
@closedir( $dir );
return $files;
}
...
?>
其他
英文文档:https://developer.wordpress.org/reference/functions/list_files/