ディレクトリを走査する、またはディレクトリ内の指定されたタイプのファイルを走査する これは、すべての子供がプログラムを作成するときに必ず使用するものです。 PHP 自体にも非常に便利な機能が多数用意されており、それらを正しく使用すれば間違いはありません。
以下は私個人の学習プロセスの概要です。これから PHP を学びたいと思っている子供たちに役立つことを願っています。
この関数は、指定されたディレクトリ (サブディレクトリを含む) 内のすべてのファイルを一覧表示できます
コードをコピーします コードは次のとおりです:
function getfiles($path){
foreach(scandir($path) as $ afile)
{
if($afile=='.'||$afile=='..') 続行
if(is_dir($path.'/'.$afile))
{
getfiles($path) .'/'.$afile);
} else {
echo $path.'/'.$afile.'
';
}
}
} //現在のディレクトリをリストします。 files under
getfiles(__DIR__);
scandir() は、指定されたディレクトリの下にあるすべてのファイルとディレクトリの配列を返します。PHP では、非常に強力な関数 glob()、glob() も提供されます。 2 番目のパラメータはオプションであり、後で説明します。 glob() を使用してディレクトリをトラバースする方法を直接見てみましょう。
「.」と「..」が glob() によって返されたコンテンツから除外されていることがわかります。ここで、* はディレクトリ内のすべてのファイルを走査することを意味します。同様に、*.txt に変更すると、ディレクトリ内のすべての txt ファイルがスキャンされます。とても便利ではないでしょうか?袁芳氏によると、その便利さにはそれだけではなく、大きな秘密が隠されているそうです。それについては後ほどお話しますので、ご興味がございましたら、メッセージを残していただけますようお願いいたします。
コードをコピーします コードは次のとおりです:
function getfiles($path){
foreach(glob($path) as $afile){
if(is_dir($afile))
{ getfiles( $afile. '/*'); } else { echo $afile.'
' }
}
} //現在のディレクトリ内のすべてのファイルをリストします
getfiles(__DIR__);0
*.txt を使用するとディレクトリ内のすべての txt ファイルが走査されるため、特定の形式のファイルを同時に走査したい場合はどうすればよいでしょうか?何をするか?配列を使用することを考えた子供もいるでしょう。すぐに配列を書き出して、それを {*.txt,*.jpg,*.zip,...} に置き換えました。もちろん、プログラムが false を返したこともすぐに発見しました。そして何も得られませんでした。がっかりしないでください。これには、先ほど述べた 2 番目のオプションのパラメーターが含まれます。詳細については、PHP マニュアルを参照してください。ここでは詳しく説明しません。 GLOB_BRACE について。これは、{a,b,c,...} を展開して 'a'、'b'、または 'c',... に一致させるために使用されます。使用法は次のとおりです: foreach(glob($path.'/{*.txt,*.jpg,*.zip,...}', GLOB_BRACE) as $fileName){...}
完全なものについてはディレクトリ内のすべてのファイルの走査 ファイル タイプを指定する関数。次の例が見られます
フォルダーとサブフォルダー内のすべてのファイルをスキャンします
コードをコピーします コードは次のとおりです:
失敗時に返す FALSE
WHILE (($ File = Readdir ($ Current_dir))! == False) {// Readdir () 開いているディレクトリ ハンドルのエントリに戻ります
$ sub_dir = $ PATH . ディレクトリ。Jianzi ディレクトリ パス if ($ file == '.' || $ file == '...') {
} else if (is_dir ($ sub_dir)) {// 、再帰的
echo 'directoryay ' ':
';
ディレクトリ「 」のファイル。 ': ' '
';