1

コードを使用してディレクトリからファイル名を読み取ろうとし、たとえばファイル名に現在の年と月を含む読み取り専用ファイルにフィルターを追加します

Julius Robles_Client11_20130508_10-42-42_AM.zip
Julius Robles_Client12_20130508_11-45-42_AM.zip
Julius Robles_Client13_20130508_11-58-42_AM.zip

そのため、コードは名前に 201305 を含むファイルのみを返しますが、正しいフィルター処理されたセットを返しますが、一部のファイルが欠落しており、その理由はわかりませんか?

また、ファイル「。」とは何ですか。と ".." 配列の最初の 2 行に格納されていますか?

コードはこちら

$filenames = array();
if ($handle = opendir('archive/search_logs/')) {
  $ctr = 0;
  while (false !== ($entry = readdir($handle))) {
    //if(strpos($entry,date('Ym')) !== false){
    $name = $entry;
    $entry = str_replace("-",":",$entry);
    $filenames[$ctr] = explode("_", $entry);
    $filenames[$ctr][] = $name;
    $ctr++;
  //}
}
  closedir($handle);
}
4

2 に答える 2

1

なぜスキャンディール?DirectoryIteratorを使用する 最新の PHP を使用することを恐れないでください

マニュアルから:

DirectoryIterator クラスは、ファイルシステム ディレクトリの内容を表示するための単純なインターフェイスを提供します。

例:

<?php
$filenames = array();
$iterator = new DirectoryIterator($directory);
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isFile()) {
        $filenames[] = $fileinfo->getFilename();
    }
}
print_r($filenames);

?>

DirectoryIterator を使用すると、次のメソッドで$fileInfoを確認できます。

  • DirectoryIterator::isDir — 現在の DirectoryIterator アイテムがディレクトリかどうかを判断する
  • DirectoryIterator::isDot — 現在の DirectoryIterator アイテムが「.」かどうかを判断する また '..'
  • DirectoryIterator::isExecutable — 現在の DirectoryIterator アイテムが実行可能かどうかを判断する
  • DirectoryIterator::isFile — 現在の DirectoryIterator アイテムが通常のファイルかどうかを判断する
  • DirectoryIterator::isLink — 現在の DirectoryIterator アイテムがシンボリック リンクかどうかを判断する
  • DirectoryIterator::isReadable — 現在の DirectoryIterator アイテムが読み取れるかどうかを判断する
  • DirectoryIterator::isWritable — 現在の DirectoryIterator アイテムが書き込み可能かどうかを判断する
于 2013-05-08T10:02:09.683 に答える