ホームページ >バックエンド開発 >PHPチュートリアル >ディレクトリ (サブディレクトリを含む) 上のすべてのファイルを表示するにはどうすればよいですか?神に助けを乞う

ディレクトリ (サブディレクトリを含む) 上のすべてのファイルを表示するにはどうすればよいですか?神に助けを乞う

WBOY
WBOYオリジナル
2016-06-13 12:56:591057ブラウズ

ディレクトリ(サブディレクトリを含む)内のすべてのファイルを表示するにはどうすればよいですか?ひざまずいて神に助けを求めてください。
既存のコードは次のとおりです:

<?php<br />
$handle=opendir("./");<br />
while(false!==($file=readdir($handle))){<br />
 if ($file != "." && $file != ".."){<br />
  echo "$file<br>";<br />
 }<br />
}<br />
closedir($handle);<br />
 <br />
?>


上記のコードは、この PHP ファイルが存在するディレクトリ内のフォルダーとファイルの名前のみを一覧表示できますが、このディレクトリ内のサブフォルダー内のファイルの名前は表示されません。
これで、以下に示すようなディレクトリ図が作成されました (実際の構造ではなく、単なる例を示します):


この PHP がフォルダー A に配置されている場合、ディレクトリ A (フォルダー B、C、D、E、F、G、H、J、K を含む) 内のすべてのファイルを表示するように変更するにはどうすればよいですか?フォルダ分けして表示するのがベスト!
ちなみに、このファイルの拡張子がHTMLでない場合は、赤字で表示するのがベストです。
ひざまずいて神に助けを求めてください。ありがとう!

ファイル名のリスト
-----解決策---------
私自身のクラスの 1 つ メソッド、あなた自分で変更できます
2 次元の配列
を返します。 パラメータの説明:
$path には、末尾にパス文字 ""
を含まない、システムの絶対パスが必要です $size =Trueの場合、ファイル内のバイト数も取得されます
$toCsv = ファイル名 (文字列)、配列の結果を返すと同時にこのファイルにも書き込まれます。形式は csv 形式です
** Windows システムは、パスに Unicode 文字が含まれるファイル名を取得できません。これはプログラムの問題ではなく、PHP の問題です。
** 空のディレクトリはリストされず、ファイルのみがリストされます。マニュアルを参照して RecursiveDirectoryIterator にパラメータを追加して空のディレクトリを取得できますが、getsize がエラーを引き起こす可能性があることに注意してください。
<br />
    public function listDir($path, $size=false, $toCsv=false)<br />
    {<br />
        if (false !== $toCsv) $newCsv = new SplFileObject($toCsv, 'wb');<br />
<br />
        $items = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));<br />
        $arr = array();<br />
        while (list($itemName, $item) = each($items))<br />
        //foreach($dir as $itemName => $item)<br />
        {<br />
            $fileInfo = array();<br />
            $fileInfo['fullpath'] = (string)$itemName;<br />
            if ($size) $fileInfo['size'] = (string)$item->getSize();<br />
<br />
            if (false !== $toCsv) $newCsv->fputcsv($fileInfo);<br />
            $arr[] = $fileInfo;<br />
        }<br />
        return $arr;<br />
    }<br />
Windows Unicodeファイル名を取得できるクラスメソッドは他にもありますが、かなり面倒なので載せません

-----解決策---------- ---- ------
関数 show($dir)
{ <br>
echo "a4b561c25d9afb9ac8dc4d70affff419{$dir}0d36329ec37a2cc24d42c7229b69747a076402276aae5dbec7f672f8f4e5cc81";<br>
$dir = realpath($dir) .'/*';<br>
foreach(glob($dir, GLOB_MARK) as $f){<br>
If(substr($f, -5) === '.html' ){<br>
$f = "b108d9de4e4bdba78396eea2d6c362ae{$f}54bdf357c58b8a65c66d7c19c8e4d114";<br>
}<br>
echo $f ."076402276aae5dbec7f672f8f4e5cc81".PHP_EOL;<br>
If(is_dir($f)){<br>
表示($f); <br><div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。