この記事では主に、PHPディレクトリのトラバース関数opendir()、readdir()、closedir()、rewinddir()の概要を紹介し、これらの関数を包括的に使用して単純なファイルブラウザを作成する例を示します。それを参照できます
PHP をプログラミングするときは、サーバー上の特定のディレクトリの下にあるファイルを参照する必要があります。通常、これがトラバーサル ディレクトリになります。ディレクトリ内のファイルとサブディレクトリを取得するには、opendir() 関数、readdir() 関数、closedir() 関数、および rewinddir() 関数を使用する必要があります。
①関数 opendir()
関数 opendir() は、指定されたディレクトリを開くために使用されます。関数の戻り値は、ディレクトリのパスとディレクトリ名をパラメータとして受け取ります。他のディレクトリ機能によって使用されます。ディレクトリが存在しない場合、またはアクセス権がない場合は、FALSE を返します。
②関数readdir()
関数readdir()は、指定されたディレクトリを読み取るために使用され、opendir()関数で開かれた操作可能なディレクトリハンドルをパラメータとして受け取ります。現在のディレクトリ ポインタの位置を変更し、ディレクトリ ポインタを 1 つ後方に移動します。ポインタがディレクトリの末尾にある場合、ファイルが存在しないため FALSE が返されます。
③関数closedir()
関数closedir()は、指定されたディレクトリをクローズし、opendir()関数でオープンされた操作可能なディレクトリハンドルをパラメータとして受け取ります。この関数には戻り値がなく、開いているディレクトリは実行後に閉じられます。
④関数 rewinddir()
関数 reweinddir() は、ディレクトリ ハンドルを巻き戻し、opendir() 関数で開かれた操作可能なディレクトリ ハンドルをパラメータとして受け取ります。ディレクトリ ポインタをディレクトリの先頭にリセットします。つまり、ディレクトリの先頭に巻き戻します。
以下では、例を使用して上記の関数の使用法を説明します。この例を使用する前に、合意されたディレクトリに phpMyAdmin フォルダーがあることを確認してください。コードは次のとおりです:
コードは次のとおりです:
<?php $num = 0; //用来统计子目录和文件的个数 $dirname = 'phpMyAdmin'; //保存当前目录下用来便利的一个目录名 $dir_handle = opendir($dirname); //用opendir打开目录 //将遍历的目录和文件名使用表格格式输出 echo '<table border="0" align="center" width="600" cellspacing="0" cellpadding="0">'; echo '<caption><h2>目录'.$dirname.'下面的内容</h2></caption>'; echo '<tr align="left" bgcolor="#cccccc">'; echo '<th>文件名</th><th>文件大小</th><th>文件类型</th><th>修改时间</th>'; //使用readdir循环读取目录里的内容 while($file = readdir($dir_handle)){ //将将目录下的文件和当前目录连接起来,才能在程序中使用 $dirFile = $dirname."/".$file; $bgcolor = $num+%2==0 ? '#FFFFFF' : '#CCCCCC'; //各行一种颜色 echo '<tr bgcolor='.$bgcolor.'>'; echo '<td>'. filesize ($dirFile).'</td>'; //显示文件名 echo '<td>'. filetype ($dirFile).'</td>'; //显示文件大小 echo '<td>'.date("Y/n/t", filemtime ($dirFile)).'</td>'; //格式化显示文件修改时间 echo '</tr>'; } echo '</table>'; closedir($dir_handle); //关闭文件操作句柄 echo '在<b>'.$dirname.'</b>目录下的子目录和文件共有<b>'.$num.'</b>个'; ?>
上記のプログラムは、最初にディレクトリ ポインタを開き、それを走査します。ディレクトリを移動するときに、2 つの特別なディレクトリ「.」と「..」が含まれますが、これらの 2 つのディレクトリが必要ない場合はブロックできます。もちろんフォルダの内容によって表示内容は異なります。上記の例からわかるように、PHP でフォルダーの内容を参照することは複雑なことではありません。さらに、PHP は、ディレクトリ トラバーサルのための オブジェクト指向 メソッドも提供します。これは、「dir」クラスを使用することで完了します。それだけでなく、PHP はユーザーの要件に従ってディレクトリ内の指定されたコンテンツを取得することもでき、指定されたディレクトリを取得するための glob() 関数を提供します。この関数は最終的に、検索結果を含む配列を返します。
以上が4つのPHPトラバーサル関数opendir()、readdir()、closedir()、rewinddir()の使用例まとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。