获得某目录合符规则的文件函数GetMatchFiles()
函数名:GetMatchFiles($indir, $fileexp, &$filearr)
所在文件:www.xxx.com/dede/file.class.php (大约在147行)
function GetMatchFiles($indir, $fileexp, &$filearr) { $dh = dir($indir); while($filename = $dh->read()) { $truefile = $indir.'/'.$filename; if($filename == "." || $filename == "..") { continue; } else if(is_dir($truefile)) { $this->GetMatchFiles($truefile, $fileexp, $filearr); } else if(preg_match("/\.(".$fileexp.")/i",$filename)) { $filearr[] = $truefile; } } $dh->close(); }
功能:获取文件。但是,这个函数没有明确指出符合什么样的规则,所以,只能叫获得某目录合符规则的文件,实际上这个函数的规则是由这个函数第三个条件决定,即,else if(preg_match("/\.(".$fileexp.")/i",$filename))
其中参数$fileexp到底指的是什么东西,在这个函数中是不知道的,织梦官方明确给出不知类型,这样的不确定,看似好像有点乱,但是,正是这种不指定反而让这个函数更加灵活,扩展性更大。在这一行代码里面,这个应该指的
是“扩展名”。就是看看用户给家的以这个扩展名为后缀的文件是不是在目录$indir存在,若存在则直接存放到数组$filearr里面。
函数结构:这个函数主要框架是一个while遍历;一个函数dir(),及其方法read()和clsoe;还在第二个条件里面的递归调用。就这三点构成了这个函数,如果分析出这些东西,那么,这个函数就简单的弄明白了。