冰客
2008-11-7 13:00:57
列表D
Array ( [0] => data.txt [dummyA] => Array ( [dummyC] => Array ( [0] => parrot.gif ) ) [dummyB] => Array ( [0] => metoo.mp3 [1] => track.dat ) ) 提示:你可以给mapTreeMultiple()加上一个可选的参数,限定它在执行递归时向下查询的层数。 用glob()方法,你可以在指定目录下搜索与特定Perl兼容型的规则表达式匹配的文件。请看一下列表E。 列表E <?php // include class include("Find.php"); // initialize finder $finder = new File_Find(); // search for matching files in named directory $results = $finder->glob("/mp3/i", "/usr/local/stuff", "perl"); print_r($results); ?> 在这里,glob()方法访问指定目录下所有名称中带有字符串mp3的文件。注意我对修饰符i的使用,它使得搜索没有大小写之分,还有我使用了第三个自变量,告诉类要使用Perl regex函数,而不是默认的PHP函数。 File_Find类由于它的search()方法而真正发挥作用起来,这个方法结合了mapTreeMultiple()和glob()方法的能力进行多层目录搜索。列表F中是一个例子。 列表F <?php // include class include("Find.php"); // initialize finder $finder = new File_Find(); // search for matching files // in named directory and subdirectories $results = $finder->search("/exe/i", "/usr/local/winstuff", "perl"); print_r($results); ?> 列表G显示了输出的一个样本: 列表G Array ( [0] => /usr/local/winstuff/4HELP.EXE [1] => /usr/local/winstuff/ARJ.EXE [2] => /usr/local/winstuff/bzip2.exe [3] => /usr/local/winstuff/CRLF.EXE [4] => /usr/local/winstuff/DECODE.EXE [5] => /usr/local/winstuff/GREP.EXE [6] => /usr/local/winstuff/GPG/gpg.exe [7] => /usr/local/winstuff/GPG/uninst-gnupg.exe [8] => /usr/local/winstuff/GPG/WinPT.exe [9] => /usr/local/winstuff/Fprot/F-PROT.EXE ) 这就是你的递归目录查询,仅仅只有四行代码! 正如你所看到的那样,File_Find使得简单有效地完成一个相对复杂的任务成为可能,而且你会感到最小的压力,这也就是我为什么极力向你推荐它的原因。下次当你需要在目录树上执行一个文件查找操作时,不妨你自己尝试一下。祝你编程快乐! |
GMT+8, 2024-12-22 21:08