PHP中使用glob递归是一个很方便的事情,如下:
function read ( $dirname )
{
static $dInfo;
$dirname .= subStr( $dirname, -1 ) == "/" ? "" : "/";
$dirInfo = glob( $dirname . "*" );
foreach ( $dirInfo as $info ){
$dInfo[] = $info;
if ( is_dir( $info ) ){
if ( !is_readable( $info ) ){
chmod( $info, 0777 );
}
read( $info );
}
}
return $dInfo;
}
当然用dir函数也可以:
function read ( $dirname )
{
static $dInfo;
$d = dir( $dirname );
if ( $d ){
while ( false !== ($entry = $d->read() ) ){
if( $entry != '.' && $entry != '..' ){
$entry = $dirname . '/' . $entry ;
$dInfo[] = $entry ;
if( is_dir( $entry )){
if ( !is_readable( $entry ) ){
chmod( $entry, 0777 );
}
//$timeInfo[] = filemtime( $entry );
read( $entry );
}
}
}
}
return $dInfo;
}
嗯。看上去没有什么问题。但是有一个情况需要注意
在linux下面,目录名可以为".aa",最典型的例子就是svn目录,svn目录里大量的".svn"的目录,好象,在linux下面,这样以"."开头的目录,默认是隐藏目录,不显示的。
所以,在使用glob的时候,这样的目录是认不出来的。这点要千万注意
做个笔记。