/*------------------------------------------------------------------  
* 函 数 : searchFiles( $srcPath, $dstFile, $subDir )  
* 作 用 : 搜索指定文件  
* 参 数 : $srcPath [String] 待搜索文件的目录路径,为空表示当前目录(选填)  
          $dstFile [String|Array] 待搜索文件类型,为空表示所有文件(选填)  
          $subDir  [Boolean] 是否搜索子目录,默认为false(选填)  
* 返 回 : Array (搜索到的文件列表)  
-------------------------------------------------------------------*/  
function searchFiles( $srcPath = '', $dstFile = '*', $subDir = false ){   
    static $files = array();   
    if ( !emptyempty( $srcPath ) ) $srcPath = rtrim( $srcPath, '/' ).'/';   
    if ( is_array( $dstFile ) ) {   
        $file = glob( $srcPath.'{'.implode( ',', $dstFile ).'}', GLOB_BRACE );   
    } else {   
        $file = glob( $srcPath.$dstFile );   
    }   
    if ( !emptyempty( $file ) ) $files = array_merge( $files, $file );   
    if ( $subDir ){   
        foreach( glob( $srcPath.'*', GLOB_ONLYDIR ) as $dir ){   
            searchFiles( $dir, $dstFile, true );   
        }   
    }   
    return $files;   
}   
// 调用实例:   
// 如果要只包含文件可以在调用函数以后加一句 $files = array_filter( $files, 'is_file' );即可   
// 列出当前目录下的所有文件(包括文件夹)   
$files = searchFiles();   
print_r( $files );   
/*  
列出当前目录下的所有文件  
这个有点要注意的地方  
如果文件夹名称含有.的会返回.例如文件夹名称为: dir.dir  
如果文件名称不包含.(即无后缀名)的不返回.例如文件名称为:file  
*/  
$files = searchFiles( '', '*.*' );   
print_r( $files );   
// 列出当前目录(包括子目录)下所有的txt文件   
$files = searchFiles( '', '*.txt', true );   
print_r( $files );   
// 列出images目录下所有的gif文件   
$files = searchFiles( 'images', '*.gif' );   
print_r( $files );   
// 列出当前目录的images目录下所有以t开头的gif以及以a开头m结尾的jpg文件   
$files = searchFiles( 'images/', array( 't*.gif', 'a*m.jpg' ) );   
print_r( $files );   
// 列出当前目录下所有以t开头、中间含有m的gif文件   
$files = searchFiles( '', 't*m*.gif' );   
print_r( $files ); 
?>