ホームページ >バックエンド開発 >PHPチュートリアル >指定されたディレクトリ内のすべてのファイルをスキャンするにはどうすればよいですか? (phpファイルシステム操作)

指定されたディレクトリ内のすべてのファイルをスキャンするにはどうすればよいですか? (phpファイルシステム操作)

黄舟
黄舟オリジナル
2017-05-20 17:01:563732ブラウズ

指定されたディレクトリ内のすべてのファイルをスキャンするにはどうすればよいですか? (phpファイルシステム操作)

ウェブサイトの管理システムでは、ウェブサイトサーバー内のファイルを管理、維持する必要があることが多く、場合によってはフォルダーを追加したり、フォルダーやファイルを削除したりする必要があります。これらのファイルまたはフォルダーを表示した後、サーバーの指定されたディレクトリ内のファイルを走査する必要があります。では、指定されたディレクトリ内のファイルの走査機能を実装するにはどうすればよいでしょうか。

指定されたディレクトリ内のすべてのファイルを走査する鍵は、file_exists()、is_dir()、opendir()、closedir() 関数などのディレクトリおよびファイル処理関数を適用することです。

1. アプリケーション機能解析

(1) file_exists(): ファイルまたはディレクトリが存在するかどうかを確認します。構文は次のとおりです。

bool file_exists(string filename)

filename で指定されたファイルまたはディレクトリが存在する場合は true を返し、存在しない場合は false を返します。

(2) is_dir(): 指定されたファイル名がディレクトリであるかどうかを判定します。構文形式は次のとおりです:

bool is_dir(string filename)

ファイル名が存在し、ディレクトリである場合は、true を返します。 ファイル名が相対パスの場合は、現在の作業ディレクトリに従って相対パスを確認します。

注:

この関数の結果はキャッシュされるため、リモート ファイルでは使用できません。チェックされるファイルには、サーバーのファイル システムを介してアクセスする必要があります。

(3) opendir(): ディレクトリハンドルをオープンします。 具体的な構文形式は次のとおりです:

resource opendir(string path)

この関数はディレクトリハンドルを返し、closedir() および readdir() の前に呼び出すことができます。 path が正当なディレクトリではない場合、または権限制限またはファイル システム エラーによりディレクトリを開けない場合、opendir() は false を返し、エラー メッセージを生成します。

(4) readdir(): ディレクトリ ハンドルからエントリを読み取ります。具体的な構文形式は次のとおりです。

string  readdir(resource dir_handle)

この関数は、ディレクトリ内の次のファイルのファイル名を返します。ファイルシステム。

(5) Closedir(): ディレクトリハンドルを閉じます。具体的な形式は次のとおりです:

string  closedir(resource dir_handle)

この関数は、dir_handle で指定されたディレクトリストリームを閉じます。ディレクトリストリームは、opendir() によって開かれている必要があります。

上記の機能を総合的に利用することで、指定ディレクトリ配下のファイルトラバーサル操作を実現できます。

2. 応用例

この例では、上で紹介した関数を適用して、指定されたディレクトリ内のファイルのトラバーサル操作を実現します。 具体的な手順は次のとおりです。

(1) php ファイルを作成し、フォーム要素を定義し、post メソッドを通じてディレクトリへのパスを送信します。

(2) このphpファイルでは、送信されたディレクトリパスが空かどうかを確認し、ディレクトリを開き、ディレクトリ内のファイルを読み取り、読み取ったファイルを出力し、ディレクトリを閉じます。そうでない場合は、出力ディレクトリが存在しません。具体的なコードは以下の通りです:

<form name="form1" action="6.php" method="post">
   文件名称: <input name="file_name" type="text">
           <input type="submit" name="Submit" value="提交">
</form>
<?php
header("Content-Type:text/html; charset=utf-8");
$file_name = $_POST[&#39;file_name&#39;];
if ($file_name){
if(!file_exists($file_name)){                 //判断指定路径的目录是否存在
    print $file_name."目录不存在";
}else{
    $i =0;
    if(is_dir($file_name)){                   //检测是否是合法目录
        if ($list = opendir($file_name)){      //打开目录
            while ($read_list = readdir($list)){  //读取目录
                $i++;    
            echo "$i:".iconv("gb2312","utf-8","$read_list")."<br>";
        }
    }
}
closedir($list);    //关于目录
}
}

この例を実行し、テキストボックスに指定したフォルダーを入力して「送信」ボタンをクリックすると、フォルダーが存在する場合、そのフォルダーに含まれるすべてのファイルが表示されます。 :

指定されたディレクトリ内のすべてのファイルをスキャンするにはどうすればよいですか? (phpファイルシステム操作)

以上が指定されたディレクトリ内のすべてのファイルをスキャンするにはどうすればよいですか? (phpファイルシステム操作)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。