파일 시스템 디렉토리를 재귀 적으로 (모든 파일과 하위 디렉토리를 포함하여) 읽을 수 있고 배열이나 객체 또는 JSON 문자열 또는 XML을 반환 할 수있는 기성품 PHP 클래스를 아는 사람 구조의?PHP 용 박스 구조체 디렉토리 구성 요소
나는이 일을 스스로하고 싶지만 클라이언트가 방금 전화를 걸어 오늘 끝내야한다고 주장하고 있습니다. 예.
파일 시스템 디렉토리를 재귀 적으로 (모든 파일과 하위 디렉토리를 포함하여) 읽을 수 있고 배열이나 객체 또는 JSON 문자열 또는 XML을 반환 할 수있는 기성품 PHP 클래스를 아는 사람 구조의?PHP 용 박스 구조체 디렉토리 구성 요소
나는이 일을 스스로하고 싶지만 클라이언트가 방금 전화를 걸어 오늘 끝내야한다고 주장하고 있습니다. 예.
빌드 된 RecursiveDirectoryIterator
Docs 클래스를 사용하여 원하는 결과를 만들 수 있습니다. 다음 예에서 계층 적 배열이 생성됩니다
$dir = '.';
$dirit = new RecursiveDirectoryIterator($dir);
$it = new RecursiveIteratorIterator($dirit);
$array = array();
foreach($it as $file)
{
$path = substr($file, strlen($dir)+1);
$parts = explode(DIRECTORY_SEPARATOR, $path);
$filename = array_pop($parts);
$dirname = implode(DIRECTORY_SEPARATOR, $parts);
$build = &$array;
foreach($parts as $part)
{
if (!isset($build[$part])) $build[$part] = array();
$build = &$build[$part];
}
$build[] = $filename;
unset($build);
}
$array
다음 목록이 포함됩니다 : I로
json_encode($array);
{"0":".buildpath","1":".project",".settings":["org.eclipse.php.core.prefs"],"array":["array-keys.php","array-stringkey-e
xplode.php"]}
: 뭔가에
Array
(
[0] => .buildpath
[1] => .project
[.settings] => Array
(
[0] => org.eclipse.php.core.prefs
)
[array] => Array
(
[0] => array-keys.php
[1] => array-stringkey-explode.php
)
)
json_encode
Docs 수있는 간단한 회전이 사용을 위의 설명에 쓰여진대로 glob
도 유용 할 수 있습니다.
PHP manual for dir의 댓글 페이지에는 디렉토리 (및 하위 디렉토리)의 내용을 재검토하기위한 코드 조각이 있습니다.) echo 문 대신 간단히 배열을로드하고이를 반환하십시오. 배열의 배열이된다). .
및 ..
으로 필터링해야하지만 그렇지 않은 경우 대부분 처리됩니다.
전역 (yuk) 또는 배열 병합 기법을 사용하여 직접 만들 수 있습니다. 기본 사항은 다음과 같습니다.
function recursiveListing($currentDir){
$results = array();
$dh = opendir($currentDir);
while(($f = readdir($dh)) !== false){
if($f == '.' || $f == '..'){ continue; }
$results[] = $currentDir.'/'.$f;
if(is_dir($currentDir.'/'.$f)){
$results = array_merge($results, recursiveListing($currentDir.'/'.$f));
}
}
return $results;
}
이렇게하면 시작해야하며 전체 경로 목록을 작성해야합니다. 이것을 json으로 반환하는 것은 json_encode()에서 비교적 쉽습니다. XML의 경우 직접 출력하거나 간단한 루핑 기능을 만들 수 있습니다.
예상되는 형식은 무엇입니까? 디렉토리와 파일에 대한 전체 경로 목록 계층 적 JSON/XML 구조? 어떤 다른 정보를 원하십니까? (filemtime, filectime, fileatime, size, content-type). 명확한 주셔서 감사합니다 –
http://php.net/glob – hakre
@MathieuDumoulin - 사실 파일 이름은 괜찮을 것입니다. 계층 적 json 문자열 또는 PHP 배열이 이상적으로 들립니다. 나는 웹 사이트 방문객에게 자신을 파싱하려고한다. – phirschybar