2017-09-07 13 views
3

이미지가 포함 된 하위 폴더가있는 디렉토리가 있습니다. 나는 한 페이지에 모든를 표시해야하고, 또한 폴더 이름을, 그래서 이런 식으로 뭔가 :PHP는 모든 하위 폴더 이미지를 에코합니다.

  • echo Subfolder name
    echo image, image, image
  • echo Subfolder2 name
    echo image2, image2 , image2

사용해 보았습니다

$images = glob($directory . "*.jpg"); 

하지만 문제는 정확히 "path/folder/subfolder /"와 같이 $directory에 하위 폴더 이름을 정의해야한다는 것입니다.

"와일드 카드"와 같이 모든 하위 폴더를 검사하고 foreach 하위 폴더 이름과 그 내용을 반향하는 옵션이 있습니까?

또한 제어 할 수없는 서버 제한으로 인해 opendirscandir을 여기에 적용 할 수 없습니다.

+0

PHP 글롭처럼 사용하여 여기에 재귀 와일드 카드를 지원하는 간단한 일이다. 이를 수행하는 재귀 함수를 작성해야합니다. – Jarzon

답변

1

Glob에는 일반적으로/** /와 같이 작성된 재귀 적 와일드 카드가 있지만 PHP Glob 함수는이를 지원하지 않습니다. 그래서 유일한 방법은 자신의 함수를 작성하는 것입니다.

<?php 
function recursiveGlob($pattern) 
{ 
    $subPatterns = explode('/**/', $pattern); 

    // Get sub dirs 
    $dirs = glob(array_shift($subPatterns) . '/*', GLOB_ONLYDIR); 

    // Get files in the current dir 
    $files = glob($pattern); 

    foreach ($dirs as $dir) { 
     $subDirList = recursiveGlob($dir . '/**/' . implode('/**/', $subPatterns)); 

     $files = array_merge($files, $subDirList); 
    } 

    return $files; 
} 

이 ** 와일드 카드를 지원하지 않는 $files = recursiveGlob("mainDir/**/*.jpg");