2013-10-17 2 views
0

현재 업로드 폴더의 내용을 가져 오기 위해 scandir을 사용하고 있습니다. 다음 디렉토리를 지정하는 내 코드입니다 :scandir를 사용하여 폴더 내용을 가져 오는 PHP

$dir = /var/www/vhosts/mywebsite.com/httpdocs/admin/newsletters/1234-16-10-2013/ 
$files = scandir($dir); 

나는 다음과 같은 결과를 통해 루프 :

foreach($files as $file) { 

    echo '<option value="'.$file.'">'.$file.'</option>';  

} 

위가 잘 작동하고 올바르게 내 선택 메뉴를 채 웁니다. 그러나 어떤 이유로 선택 메뉴의 옵션은 다음과 같습니다.

<option value=".">.</option> 
<option value="..">..</option> 
<option selected="selected" value="header.jpg">header.jpg</option> 
<option value="sale.jpg">sale.jpg</option> 
<option value="show-now.jpg">show-now.jpg</option> 

처음 두 옵션에는 정 위치가 포함되어 있습니다. 처음에는 1이 있고 두 번째에는 2가 있습니다.

왜 이것이 아는 사람이 있습니까? 그것은 디렉토리의 깊이 때문에입니까?

도움이 될 것입니다.

+0

이들은 '현재 디렉토리'(.) 및 '상위 디렉토리'(..)에 대한 표준 참조입니다. –

+1

if ($ file === '.'|| $ file === '..') {continue;} – leuchtdiode

+0

@leuchtdiode, 완벽한 간단한 수정! 감사! – danyo

답변

4

이는 '현재 디렉토리'및 '상위 디렉토리'에 대한 포인터 인 시스템 항목 ... 때문입니다. 출력물을보고 싶지 않은 경우 필터링해야합니다.

당신은 is_file()으로 항목을 필터링 할 수 있습니다 - 그들은 (그들에게 포인터) 실제로 디렉토리이기 때문에

1

위해 scandir가 상대적으로 느린 생략 될 것이다 다음 ....

 foreach (new DirectoryIterator($path) as $file) 
     { 
      if($file->isDot()) continue; 

      if($file->isDir())) 
      { 
       print $file->getFilename() . '<br />'; 
      } 
     } 
+0

답장을 보내 주셔서 감사합니다.로드 할 파일이 3 개이므로 속도는 문제가되지 않습니다. 제일. – danyo

관련 문제