+ -
当前位置:首页 → 问答吧 → 第一题,遍历目录

第一题,遍历目录

时间:2008-10-07

来源:互联网

[php]
/**
* 目录遍历函数
*
* @param string $dir 开始遍历的目录
* @param string $callback 对遍历的每一个文件调用用户定义函数
*/
function walkdir($dir,$callback)
{
    //取得绝对路径
    $dir = realpath($dir);
    //入栈
    $stack = array($dir);   
   
    //如果栈不为空并且打开目录成功
    while(null !== ($dir = array_shift($stack)) && false !== ($handle = opendir($dir))){
       //如果读取文件成功
        while(false !==($file = readdir($handle))){
            //忽略.和..
            if($file == '.' || $file == '..') {
                continue 1;
            }
            $path = $dir . DIRECTORY_SEPARATOR . $file;
            if (is_dir($path)) {
                //如果是目录则入栈
                $stack[] = $path;
            } else {
                //否则如果用户定义函数存在,则将文件名传入,调用用户函数
                if (function_exists($callback)){
                    $callback($path);
                }
            }
            
        }
    }
   
}
   
/**
*供遍历时调用的函数
*/
function visit($file){
        echo $file."<br>";
}

walkdir('','visit');
[/php]

作者: sentrychen   发布时间: 2008-10-07