2012-05-10 2 views
1

Каков наилучший способ проверить, содержит ли данный каталог * .png a * .mp4 и т. Д.? Мне нужно только вернуть true, если все эти типы файлов находятся внутри каталога.Проверить в php, если каталог содержит разные типы файлов

Это мой текущий код, который не работает. если я использую только один тип файла он работает, но не возвращает ложное:

var_dump(glob($video_dir.'*.txt,.jpg', GLOB_BRACE)); 

Благодарности

+2

Вы можете разместить код, который вы пробовали до сих пор пожалуйста? – PeeHaa

ответ

4
// function to find files with specified extensions in a folder 
function has_the_files($dir, $extensions = array()) { 
    if (empty($extensions) || ! is_array($extensions) || ! is_dir($dir)) return false; 
    foreach ($extensions as $ext) if (count(glob($dir . '/*.' . $ext)) > 0) $found[$ext] = 1; 
    return (count($found) == count($extensions)) ? true : false; 
} 

// use it like 
$dir = dirname(__FILE__) . '/images'; //absolute path to the directory you wanna test 
$extensions = array('jpg','png'); // an array containing the file extensions you seek for 
var_dump(has_the_files($dir, $extensions)); // outputs: bool(false) 
1

При использовании GLOB_BRACE вы должны использовать скобки {}. Следующий код должен работать:

var_dump(glob($video_dir.'{*.txt,*.jpg}', GLOB_BRACE)); 
+0

Хорошо. Но я хочу, чтобы возвращался false, если один из типов файлов отсутствует. – user998163

+0

Ах, ладно, я вижу. Я думаю, это будет невозможно, если вы не зациклитесь на своих расширениях и не используете 'glob()' для поиска каждого из них. – mixable

Смежные вопросы