手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:glob

php 使用glob遍历时的注意事项[原创]

PHP中使用glob递归是一个很方便的事情,如下:

PHP代码
  1. function read ( $dirname )  
  2. {  
  3.     static $dInfo;  
  4.     $dirname .= subStr$dirname, -1 ) == "/"  ? "" : "/";  
  5.     $dirInfo = glob$dirname . "*" );  
  6.     foreach ( $dirInfo as $info ){  
  7.         $dInfo[] = $info;  
  8.         if ( is_dir$info ) ){  
  9.             if ( !is_readable$info ) ){  
  10.                 chmod$info, 0777 );  
  11.             }  
  12.             read( $info );  
  13.         }  
  14.     }  
  15.     return $dInfo;  
  16. }  
当然用dir函数也可以:

PHP代码
  1. function read ( $dirname )  
  2. {  
  3.     static $dInfo;  
  4.     $d = dir( $dirname );  
  5.     if ( $d ){  
  6.         while ( false !== ($entry = $d->read() ) ){  
  7.             if$entry != '.' && $entry != '..' ){  
  8.                 $entry = $dirname . '/' . $entry ;  
  9.                 $dInfo[] = $entry ;  
  10.                 ifis_dir$entry )){  
  11.                     if ( !is_readable$entry ) ){  
  12.                         chmod$entry, 0777 );  
  13.                     }  
  14.                     //$timeInfo[] = filemtime( $entry );  
  15.                     read( $entry );  
  16.                 }  
  17.             }  
  18.         }  
  19.     }  
  20.     return $dInfo;  
  21. }  
嗯。看上去没有什么问题。但是有一个情况需要注意

在linux下面,目录名可以为".aa",最典型的例子就是svn目录,svn目录里大量的".svn"的目录,好象,在linux下面,这样以"."开头的目录,默认是隐藏目录,不显示的。

所以,在使用glob的时候,这样的目录是认不出来的。这点要千万注意

做个笔记。

Tags: glob