スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[PHP] ディレクトリを探査

スクリプト以下のディレクトリ名を最下層まで探査します。
再帰的に探索するのがエレガントかと思いますが、配列に格納したディレクトリ名を
ひとつずつ対象にし、新たに見つかったディレクトリは後で探査を行うものとして、配列に追加します。

動作条件:
特になし。このサーバは PHP5ですが、4でも問題ないでしょう。





//---------------------------
// 初期化
//---------------------------
// ディレクトリ名を格納する配列
// 現在ディレクトリで初期セット
$idx_ary[0] = ".";
// 上記配列の位置を示す添字
$idx = 0;
// 上記配列の最大添字
$max_idx = 0;

//-------------------------------------------
// ディレクトリ名を格納している配列を頭から最大まで
//-------------------------------------------
while( $idx <= $max_idx ){

//配列で指定されたディレクトリを探査
$dir = dir( $idx_ary[$idx] );

//ディレクトリの要素をひとつずつ処理
while( $item = $dir->read() ){

// 現在位置(.)、親(..)、以外のディレクトリを、
// 新規ディレクトリとして末尾に追加格納
// 現在探査中のディレクトリ名( $idx_ary[$idx] ) と連結することで相対パスとする
if( is_dir( $idx_ary[$idx]."/".$item ) && $item != "." && $item != ".." ){
//先に最大数をインクリメント
$max_idx++;
//増やした末尾にディレクトリ名を格納
$idx_ary[$max_idx] = $idx_ary[$idx]."/".$item;
}
}
//いったん閉じる
$dir->close();

//探査対象を進める
// 次々と見つかれば配列も伸びていく
$idx++;
}

//すべての探査を終えたので、名称でソートをかける
sort( $idx_ary );

//出力
for( $i = 0; $i <= $max_idx; $i++ ){
echo $idx_ary[$i]."
";
}

?>
関連記事
スポンサーサイト

comment

管理者にだけメッセージを送る

自己コメント

あー、しもたー、ファイルアップロードする仕組みつくったけど
アップした後に chmod するの忘れてたからFTPからダウンロードできねえわー

ってときにディレクトリ配下に chmod かけるスクリプトを
いつも書き直してるのでここにメモしとく。

$dir = dir( "." );
while( $item = $dir->read() ){
if( $item != "." && $item != ".." ){
print "* ".$item."<br>";
chmod( "./".$item, 0666 );
}
}
検索フォーム
リンク
最新記事
最新コメント
カテゴリ
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。