2014-06-05 6 views
1

안녕하세요. 다음 함수를 사용하여 디렉토리의 모든 파일과 폴더를 나열하고 있습니다.php - 디렉토리에 폴더와 파일을 나열합니다.

<?php 

    function listFolderFiles($dir){ 

     $ffs = scandir($dir); 

      foreach($ffs as $ff){ 

       echo $ff . "<br/>"; 

      } 

    } 

?> 

는하지만, 문제는 내가 디렉토리 괜찮아에있는 모든 폴더를 받고 있어요하지만 난 또한 ... 받고 있어요 것 같다. 아래처럼.

. 
.. 
direc 
img 
music 
New Text Document.txt 

와 내가 좋아하는 다음과 같은 기능을 사용하고 있습니다 : listFolderFiles('MyFolder');

내가하고 싶은 것은 모든 폴더와 파일 만 얻을 것입니다하지 ..., 어떻게 내가 어떻게 할 수 잘못 수행하고있다 나가 원하는 것을 얻으십시오. 감사!

print_r(glob("*.*")); 

예 : 배열에 파일 이름을두고

<?php 
$ffs = array_diff(scandir($dir), array('..', '.')); 
?> 
+0

잘못된 것을하지 않았 으면'.'과'..'이 무엇인지 알고 계십니까? –

+0

가능한 중복 : http://stackoverflow.com/questions/7132399/why-is-it-whenever-i-use-scandir--receive-periods-at-the-beginning-of-the-arr –

답변

1

쉬운 방법은 리눅스 환경에서 scandir() 픽업이 점을 없애 :

// directory name 
$directory = "/"; 

// get in directory 
$files = glob($directory . "*"); 

$d = 0; // init dir array count 
$f = 0; // init file array count 

// directories and files 
foreach($files as $file) { 
    if(is_dir($file)) { 
     array($l['directory'][$d] = $file); 
     $d++; 
    } else { 
     array($l['file'][$f] = $file); 
     $f++; 
    } 
} 

print_r($l); 

참고 : scandir은 또한 .htaccess과 같은 숨김 파일을 선택합니다. 물론 glob 메서드를 표시해야하는 경우가 아니면 glob 메서드를 대신 사용해야합니다.

2

당신은 아주 쉽게 글로브를 사용할 수 있습니다 :

0

이렇게해야합니다!

<?php 

function listFolderFiles($dir){ 
    $ffs = scandir($dir); 
    foreach($ffs as &$ff){ 

     if ($ff != '.' && $ff != '..') { 
      echo $ff . "<br/>"; 
     } 
    } 
} 

?> 
관련 문제