获得某目录合符规则的文件函数GetMatchFiles()

admin2019-12-23785

函数名: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;还在第二个条件里面的递归调用。就这三点构成了这个函数,如果分析出这些东西,那么,这个函数就简单的弄明白了。


网友评论