7

フォルダーとそのサブフォルダー内のすべてのファイル (特定の拡張子を持つ) を一覧表示する必要があります。PHP list all files in directoryでの @Matthew の素晴らしい回答で説明されているように、 RecursiveIteratorIterator を使用しました。

  • 検索のルートを「..」に設定しており、すべてのファイル名に「../」というプレフィックスが付きます。ファイル名だけを取得するにはどうすればよいですか?
  • ファイル名に加えて、その親フォルダー名を取得するにはどうすればよいですか?
  • ...そして、ファイル名のフルパスを取得するにはどうすればよいですか?

最後にもう 1 つ: ファイル ツリー、またはサブディレクトリを持たないすべてのディレクトリを表示することは、ファイルを扱うときに実行したいことの例です。このデータをクライアント側にどのように渡すことをお勧めしますか?また、データ構造はどのようになりますか?

4

3 に答える 3

10

$filenameその答えは実際には文字列ではありません。文字列のように使用できるタイプのオブジェクトですが、SplFileInfoより詳細な情報も提供します。

于 2013-03-18T03:00:01.837 に答える
3

これをベースとして使用:

$iter = new RecursiveDirectoryIterator('../');

foreach (new RecursiveIteratorIterator($iter) as $fileName => $fileInfo) {
   $fullPath = (string) $fileInfo;
}

それぞれ$fileInfoがオブジェクトを返しSplFileInfoます。他の多くの方法に加えて、パスとファイル名に簡単にアクセスできます。

phpSplFileInfo Object
(
  [pathName:SplFileInfo:private] => ./t.php
  [fileName:SplFileInfo:private] => t.php
)

私は間違っているかもしれませんが、ツリーを介して記録しない限り、親フォルダー名にアクセスするには、パスを使用dirnameして追加するのが最も簡単です。../

于 2013-03-18T02:59:54.397 に答える
1
<?php
    $iterator = new FilesystemIterator(dirname(__FILE__), FilesystemIterator::CURRENT_AS_PATHNAME);
    foreach ($iterator as $fileinfo) {
        echo $iterator->current()->getPathname() . "\n";
    }
 ?>
于 2014-04-09T09:13:29.977 に答える