[PHP] 파일 검색 함수

function findFilesWithDateRange(
      $path,
      $fileName = null,
      $extension = null,
      $startDate = null,
      $endDate = null,
      $fileTimeType = 'modified',
      $maxSubdirectoryDepth = -1
) {
      $path = is_array($path) ? $path : [$path];
      $matchingFiles = [];

      foreach ($path as $dir) {
            if (!is_dir($dir)) {
                  continue;
            }

            $dirIterator = new RecursiveDirectoryIterator($dir);
            $iterator = new RecursiveIteratorIterator($dirIterator);

            if ($maxSubdirectoryDepth >= 0) {
                  $iterator->setMaxDepth($maxSubdirectoryDepth);
            }

            foreach ($iterator as $fileInfo) {
                  if ($fileInfo->isFile()) {
                        $filePath = $fileInfo->getPathname();
                        $fileTime = ($fileTimeType == 'created') ? filectime($filePath) : filemtime($filePath);

                        if (
                              (is_null($fileName) || fnmatch($fileName, $fileInfo->getFilename())) &&
                              (is_null($extension) || pathinfo($fileInfo->getFilename(), PATHINFO_EXTENSION) == $extension) &&
                              (is_null($startDate) || $fileTime >= strtotime($startDate)) &&
                              (is_null($endDate) || $fileTime <= strtotime($endDate))
                        ) {
                              $matchingFiles[] = $filePath;
                        }
                  }
            }
      }
      if (count($matchingFiles) > 0) {
            return $matchingFiles;
      } else {
            return false;
      }
}

파일을 검색하는 함수이다.

경로, 파일명, 확장자, 생성/수정일, 깊이등을 설정 가능하다.

파일이 없을 경우 false를 리턴한다.

Leave a Comment