質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

3284閲覧

ディレクトリかフォルダかで処理の見分けかたについての質問です (PHP)

mores

総合スコア15

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2014/09/29 08:17

PHPを使っているのですが、ディレクトリにおいてフォルダを見つける処理について質問です。

私は下記のコードが、アップロード時に使われます。

lang

1$test = "test/test1.php"; 2$a = scandir($test); 3var_dump($a);

$testフォルダ内の全てのフォルダを見つけるようにしたいですが、やり方が分からず困っています。
やり方が分かれば、$testディレクトリのファイルのみを残しつつ、フォルダとそのコンテンツを消去したいと思っています。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

$testディレクトリのファイルのみを残しつつ、フォルダとそのコンテンツを消去したいと思っています。

以下の通りでどうでしょうか。

lang

1$test = "test/"; 2$test_arr = scandir($test); 3 4foreach($test_arr as $file) { 5 if ($file === "." || $file === "..") { continue; } 6 7 if (is_dir($test . $file)) { 8 rm_dir($test . $file); 9 } 10} 11 12function rm_dir($path) { 13 foreach(scandir($path) as $item) { 14 if ($item === "." || $item === "..") { continue; } 15 $dirpath = $path . DIRECTORY_SEPARATOR . $item; 16 if (is_dir($dirpath)) { 17 rm_dir($dirpath); 18 } else { 19 unlink($dirpath); 20 echo "file deleted($dirpath).\n"; 21 } 22 } 23 rmdir($path); 24 echo "dir deleted($path).\n"; 25}

投稿2014/10/02 08:13

harmar229

総合スコア55

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

OSがLinuxであればsystemまたはphpからシェルのfindを呼び出す方法はいかがでしょうか。

・検索対象ディレクトリ以下の全てのディレクトリパスを取得する場合
find [検索対象ディレクトリ] -mindepth 1 -type d
・検索対象ディレクトリ直下のディレクトリパスのみを取得する場合
find [検索対象ディレクトリ] -maxdepth 1 -mindepth 1 -type d

お試し下さい。

投稿2014/09/30 08:29

zombie

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ファイルまたはフォルダを持っているか確認する為に、is_dir()とis_file()が使えます。

例えば下記のような感じです。

lang

1$test = "test/test2.php"; 2$folders = scandir($test); 3 4foreach ($folders as $file) { 5 if ($file === '.' or $file === '..') continue; 6 7 if (is_dir($path . '/' . $file)) { 8 //もしディレクトリなら、使う為のコード 9 } 10 var_dump($file); 11}

投稿2014/09/30 07:30

suminotky

総合スコア67

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問