2011-03-29 4 views
2

Я пытаюсь сканировать папку с изображениями, однако я продолжаю видя ._ файлов макинтош создалИгнорировать скрытые файлы с PHP

Я использую этот код:

<?php 
if ($handle = opendir('assets/automotive')) { 
    $ignore = array('cgi-bin', '.', '..','._'); 
    while (false !== ($file = readdir($handle))) { 
     if (!in_array($file,$ignore)) { 
      echo "$file\n"; 
     } 
    } 
    closedir($handle); 
} 
?> 

Все идеи Зачем? Я создал массив игнорирования, который его охватывает.

Обновление: Показывает оба варианта.

ответ

6

Я думаю, что вы хотите игнорировать любой файл, который начинает с точкой, а не просто имя файла (.).

<?php 
if ($handle = opendir('assets/automotive')) { 
    $ignore = array('cgi-bin', '.', '..','._'); 
    while (false !== ($file = readdir($handle))) { 
     if (!in_array($file,$ignore) and substr($file, 0, 1) != '.') { 
      echo "$file\n"; 
     } 
    } 
    closedir($handle); 
} 
?> 
+0

Да, это трюк, спасибо! Я отмечу, что он принят, когда он позволяет мне – mattyb

+0

Учитывая, что мы знаем, что '$ file' - это непустая строка,' substr ($ file, 0, 1) '- ненужный многопользовательский способ записи' $ file [0] ' , Избыточность наличия массива '$ ignore' включает в себя dotfiles, несмотря на то, что они покрыты другим условием, также является уродливым. –

2

in_array()takes two parameters:. Вещь, которую вы хотите найти, и массив для поиска в Вы хотите:

if (!in_array($file, $ignore)) 
+0

Я добавил его и по-прежнему показывает оба типа – mattyb

+0

Я запускал аналогичный код, и он работает правильно для меня. –

0

Вы проверяете для in_array, но следующие вопросы это: «это то, что in_array ".

in_array нужен второй параметр, в данном случае $file, для поиска. Вам понадобятся:

in_array($file,$ignore);