ホームページ > バックエンド開発 > PHPの問題 > phpはフォルダートラバーサルを実装します

phpはフォルダートラバーサルを実装します

PHPz
リリース: 2023-05-29 16:39:39
オリジナル
3195 人が閲覧しました

PHP は、さまざまな操作の実装に使用できる非常に人気のあるプログラミング言語です。その中でも、フォルダーをたどってそこにあるファイル情報を取得することは頻繁に必要な操作です。この記事では、PHPでフォルダートラバーサルを実装する方法を説明します。

  1. opendir() 関数

opendir() 関数は、フォルダーを開くために PHP によって使用される関数です。この関数を呼び出すときは、フォルダーのパスを渡す必要があります。パラメータとして。フォルダーが正常に開かれると、readdir() 関数を通じてフォルダーの内容を読み取ることができます。

サンプル コード:

$dir = './test';  //文件夹路径
$handle = opendir($dir);  //打开文件夹
while ($file = readdir($handle)) {  //循环读取所有文件
    if ($file != "." && $file != "..") {  //排除"."和".."两个特殊的文件夹
        echo $file."<br>";  //输出文件名
    }
}
closedir($handle);  //关闭文件夹
ログイン後にコピー

上記のサンプル コードでは、「test」という名前のフォルダーを開き、そのフォルダー内のすべてのファイル名をループで読み取り、2 つの特別なフォルダーを無視します。 。" そして ".."。

  1. is_dir() 関数と再帰的走査

ディレクトリ内のすべてのサブディレクトリとファイルを走査したい場合は、再帰的メソッドを使用できます。走査プロセス中に、現在の走査がフォルダーであるかファイルであるかを判断する必要もあり、is_dir() 関数を使用して判断できます。

サンプル コード:

function scanDir($dir){
    if(!is_dir($dir)){
        echo '不是一个有效的文件夹路径';
        return;
    }
    $handle = opendir($dir);  //打开文件夹
    while($file = readdir($handle)){  //循环读取所有文件
        if($file == '.' || $file == '..'){  //忽略掉 ".",".." 特殊文件夹
            continue;
        }
        $path = $dir.'/'.$file;  //当前文件或文件夹的完整路径
        if(is_dir($path)){  //如果是一个文件夹
            echo '<b>'.$file.'</b><br>';  //输出文件夹名称
            scanDir($path);  //递归遍历子文件夹
        }else{  //如果是一个文件
            echo $file.'<br>';  //输出文件名称
        }
    }
    closedir($handle);  //关闭文件夹
}
ログイン後にコピー

上記のサンプル コードでは、フォルダー パスをパラメーターとして受け取る関数 scanDir() を定義しました。関数内では、まず受信パスがフォルダーであるかどうかを判断します。フォルダでない場合は直接戻ります。

次に、フォルダーを開いて、その中のファイルとフォルダーをループで読み取ります。フォルダーを移動するときは、フォルダー名を出力し、scanDir() 関数を再帰的に呼び出してサブフォルダーを移動します。ファイルを反復処理するときは、ファイル名を出力するだけです。

  1. scandir() 関数

PHP には、フォルダーを一度に取得するために使用できる非常に単純な関数 scandir() も用意されています。の下にあるすべてのファイルとフォルダーの名前。 opendir() 関数とは異なり、この関数はすべてのサブフォルダーとファイルの名前を含む配列を返します。

サンプル コード:

$dir = './test';  //文件夹路径
$files = scandir($dir);  //获取文件夹下所有文件和文件夹名称
foreach($files as $file){  //循环遍历
    if($file == '.' || $file == '..'){  //忽略掉 ".",".." 特殊文件夹
        continue;
    }
    echo $file.'<br>';  //输出文件或文件夹名称
}
ログイン後にコピー

上記のサンプル コードでは、scandir() 関数を呼び出して、フォルダー内のすべてのファイル名とフォルダー名を取得し、これをループしました。配列が走査されます。同様に、2 つの特殊フォルダー「.」と「..」を無視して、フォルダーとファイルの名前のみを出力しました。

概要

この記事では、PHP でフォルダー トラバーサルを実装する方法を紹介し、3 つの異なる方法を示しました。 opendir() 関数と readdir() 関数を使用すると、フォルダー内のすべてのファイルとフォルダーをループし、ファイルの種類を判断して対応する操作を実行できます。再帰的走査により、ディレクトリ内のすべてのサブディレクトリとファイルを走査できます。 scandir() 関数を通じて、フォルダー内のすべてのサブフォルダーとファイル名を一度に取得します。 PHP でフォルダーを反復処理する必要がある場合、この記事が参考になれば幸いです。

以上がphpはフォルダートラバーサルを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート