• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォルダへの再帰的な関数処理方を教えてください)

再帰的な関数処理でディレクトリ内の.svnディレクトリを削除する方法

このQ&Aのポイント
  • 以下のPHPコードを使用して、再帰的な関数処理で指定されたディレクトリ内のすべての.svnディレクトリを削除することができます。
  • コマンドラインからPHPを実行し、ディレクトリ内のすべての.svnディレクトリを再帰的に削除します。
  • コード内のDirectoryIteratorを使用して、ディレクトリ内のすべてのファイルとディレクトリにアクセスし、.svnディレクトリが見つかった場合に削除します。

質問者が選んだベストアンサー

  • ベストアンサー
  • ida_rdt
  • ベストアンサー率75% (3/4)
回答No.1

再帰的に処理する場合は、自分自身(function)を再帰的に呼び出すことで、非常にシンプルになります。 $sourceDir = '/var/www/html'; // 対象フォルダ(例) $targetDir = '.svn'; // 処理するフォルダ名 procDir( $sourceDir, $targetDir ); function procDir( $sourceDir, $targetDir ) {  // ディレクトリを開く  if ( $handle = opendir( $sourceDir ) )  {   while ( false !== ( $file = readdir( $handle ) ) )   {    // エラーチェック    if ( $file == '.' || $file == '..' ) { continue; }    $path = $sourceDir . '/' . $file;    if ( is_dir( $path ) )    {     // 対象フォルダの処理     if ( $file == $targetDir )     {      /**       * [ $path ] にターゲットのフルパスが格納される。       * 削除を実行する前に、echo 等で書き出して確認することを       * お勧めします。下記例だと、シェルコマンドの rm を使用して       * いますが、unlink + rmdir の組み合わせの方がPHPっぽい       * かもしれません。       *       */      //system( 'rm -dfvr ' . $path );      //echo $path . "\n";      continue;     }     // 再帰的に処理     procDir( $path, $targetDir );    }   }   closedir( $handle );  } }

関連するQ&A