ディレクトリとディレクトリ内のファイルを走査できる phpディレクトリ走査メソッドをいくつかご紹介します
ディレクトリを走査したり、ディレクトリ内の指定された種類のファイルを走査したりする これは、すべての子供がプログラムを書くときに必ず使用するものです。 PHP 自体にも非常に便利な機能が多数用意されており、それらを正しく使用すれば間違いはありません。
この関数は、指定されたディレクトリ (サブディレクトリを含む) 内のすべてのファイルを一覧表示できます。
コードは次のとおりです:
function getfiles($path){ foreach (scandir($path) as $afile) { if($afile=='.'||$afile=='..') continue; if(is_dir($path.'/'.$afile)) { getfiles($path.'/'.$afile); } else { echo $path.'/'.$afile.'<br />'; } } } //简单的demo,列出当前目录下所有的文件 getfiles(DIR);
scandir() は、指定されたディレクトリ内のすべてのファイルとディレクトリの配列を返します。PHP では、非常に強力な関数 glob() には 2 つのパラメータがあります。2 番目のパラメータについては後で説明します。 glob() を使用してディレクトリをトラバースする方法を直接見てみましょう。
「.」と「..」が glob() によって返されたコンテンツから除外されていることがわかります。ここで、* はディレクトリ内のすべてのファイルを走査することを意味します。同様に、*.txt に変更すると、ディレクトリ内のすべての txt ファイルがスキャンされます。とても便利ではないでしょうか?袁芳氏によると、その便利さにはそれだけではなく、大きな秘密が隠されているそうです。それについては後ほどお話しますので、ご興味がございましたら、メッセージを残していただけますようお願いいたします。
コードは次のとおりです:
function getfiles($path){ foreach(glob($path) as $afile){ if(is_dir($afile)) { getfiles($afile.'/*'); } else { echo $afile.'<br />'; } } } //简单的demo,列出当前目录下所有的文件 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){...}
完全なものについてはディレクトリ内のすべてのファイルの走査 指定されたファイル タイプ関数の次の例を見てみましょう
フォルダー内のすべてのファイルを走査およびサブフォルダー
コードは次のとおりです:
<html> <body> <?php function traverse($path = '.') { $current_dir = opendir($path); //opendir()返回一个目录句柄,失败返回false while(($file = readdir($current_dir)) !== false) { //readdir()返回打开目录句柄中的一个条目 $sub_dir = $path . DIRECTORY_SEPARATOR . $file; //构建子目录路径 if($file == '.' || $file == '..') { continue; } else if(is_dir($sub_dir)) { //如果是目录,进行递归 echo 'Directory ' . $file . ':<br>'; traverse($sub_dir); } else { //如果是文件,直接输出 echo 'File in Directory ' . $path . ': ' . $file . '<br>'; } } } traverse('xxtt'); ?> </body> </html>
よく使用される例
コードは次のとおりです:
<?php $dir="E:/video"; //这里输入其它路径 //PHP遍历文件夹下所有文件 $handle=opendir($dir."."); echo "文件:<br>"; while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { echo $file; //输出文件名 } } closedir($handle); ?>
この段落を使用します。 コードはすべてのファイルをループし、すべてのファイル名を配列として保存します。
コードは次のとおりです:
<?php $s=explode("/n",trim(`dir/b e://video`)); print_r($s); ?> <?php $dir="E:/video"; //这里输入其它路径 //PHP遍历文件夹下所有文件 $handle=opendir($dir."."); echo "文件:<br>"; while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $file=$file.','; //输出文件名 $file=explode(',',$file); } } print_r($file);//输出的就是数组了 closedir($handle); ?> <?php $dir="."; //这里输入其它路径 //PHP遍历文件夹下所有文件 $handle=opendir($dir."."); echo "文件:<br>"; //定义用于存储文件名的数组 $array_file = array(); while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $array_file[] = $file; //输出文件名 } } closedir($handle); print_r("<pre class="brush:php;toolbar:false">"); print_r($array_file); print_r(""); ?>
以上がPHP でディレクトリとフォルダーを移動するいくつかの方法を紹介します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。