-
- function myscandir($pathname){
- foreach( glob($pathname) as $filename ){
- if(is_dir($filename)){
- myscandir($filename.'/*' );
- }else{
- echo $filename.'
';
- }
- }
- }
- myscandir('D:/wamp/www/exe1/*');
- ?>
コード
2 をコピーします。
-
- function myscandir($path){
- $mydir=dir($path);
- while($file=$mydir->read()){
- $p=$path .'/'.$file;
- if(($file!=".") AND ($file!="..")){
- echo $p.'
';
- }
- if( (is_dir($p)) AND ($file!=".") AND ($file!="..")){
- myscandir($p);
- }
- }
- }
- myscandir(dirname(dirname( __FILE__)));
- ?>
コードをコピー
2. PHPディレクトリトラバーサル関数opendirの使い方
opendir()関数の機能:
ディレクトリ ハンドルを開きます。関数が正常に実行されると、一連のディレクトリ ストリーム (一連のディレクトリ文字列) が返されます。失敗すると、先頭に「@」を追加できます。エラーを隠す機能
構文構文: opendir(ディレクトリ,コンテキスト)パラメータ
パラメータ:説明
説明: ディレクトリはストリーミングするディレクトリを指定します。
必須パラメータはディレクトリ オブジェクトを指定し、オプション パラメータは処理する必要があるディレクトリ オブジェクトのコンテキストを指定します。このコンテキストには、テキスト ストリームの表示モードを変更できる一連のオプションが含まれます。
コード:
-
- $dir = "./";
-
- // 既知のディレクトリを開き、その内容の読み取りに進みます
- if (is_dir($dir))
- {
- if ($dh = opendir($dir)) {
- while (($file = readdir($dh)) !== false) {
- echo "ファイル名: $file : ファイルタイプ: " . filetype($dir . $file) . "."
"; - }
- closedir($dh);
- }
- }
- ?>
PHP では、ディレクトリ内のすべてのファイルをリストするコードを再帰的に実装する必要はありません
コード:
/** * ディレクトリ内のすべてのファイルをクエリするための PHP 非再帰実装 * @param known $dir * @return multitype:|multitype:string*/ function scanfiles($dir) { if (! is_dir ( $dir ))- return array ();
- < ;p> // すべてのオペレーティング システムと互換性があります
- $dir = rtrim ( str_replace ( '\', '/', $dir ), '/';
/ スタック、デフォルト値は渡されたディレクトリです
- $dirs = array ( $dir );
// すべてのファイルを配置するコンテナ
- $rt = array (); ;
-
do {
- // スタックをポップします
- $dir = array_pop ( $dirs );
// ディレクトリをスキャンします
- $tmp = scandir ( $dir );< ;/p> ;
foreach ( $tmp as $f ) {
- // フィルタ..
- if ($f == '.' || $f == '..')
- 続く;
-
- // 現在の絶対パスを結合します
- $path = $dir . $f;
-
- // ディレクトリの場合は、スタックにプッシュします。
- if (is_dir ( $path )) {
- array_push ( $dirs, $path . '/' );
- } else if (is_file ( $path )) { // ファイルの場合はコンテナに入れます
- $rt [ ] = $path;
- }
- }
} while ( $dirs ) // スタックにディレクトリがなくなるまで
rt;
- }< ;/p>
-
-
- コードをコピー
-
-
-
-
-
-
|