2016-10-18 4 views
0

Код Мир, люди.PHP показать конкретные файлы каталога

Пытается отображать только определенные файлы на моей странице. Прямо сейчас, я возвращаю файл thumbs.db, который невидим в каталоге. Мне нужно показывать только файлы pdf, docx или xls.

<?php 
    function returnEmpdisDocs() 
    { 
    $dir = "empdis/docs/"; 
    $ffs = scandir($dir); 

    foreach($ffs as $ff) 
    { 
     if($ff != '.' && $ff != '..') 
     { 
     $filesize = filesize($dir . '/' . $ff);  
     echo "<li><a download href='$dir/$ff'>$ff</a></li>"; 
     } 
    } 
    } 
    returnEmpdisDocs(); 
?> 

Мой вопрос: что я могу добавить к вышеуказанному коду, чтобы включить только файлы pdf, docx и xls?

Ваша помощь очень признательна. Заранее спасибо.

+0

именно то, что вы делаете: добавьте те тесты 'if', которые необходимо отфильтровать, что вы делаете/не хотите. –

+1

http://stackoverflow.com/questions/17309554/glob-php-return-all-types-of-images-from-directory – mkaatman

+1

Возможный дубликат [Список файлов PHP с несколькими файловыми расширениями] (http://stackoverflow.com/questions/10591530/php-file-listing-multiple-file-extensions) –

ответ

1

Просто замените это:

if($ff != '.' && $ff != '..')

и использовать это:

if($ff != '.' && $ff != '..' && preg_match('#\.(pdf|docx|xls)$#',$ff))

регулярное выражение \.(pdf|docx|xls)$ тесты, что строка заканчивается с одним из приведенных слов

мало обновлений : лучший тест для реальных расширений (отметил Патрик), я добавил \.

+0

Спасибо. Это то, что сработало для меня. –

+0

Обратите внимание, что это решение явно не проверяет расширение (или тип файла). Он просто проверяет, что находится в конце имени файла. Таким образом, файл с именем 'mypdf' (без расширения) будет проходить эту проверку. Как и 'example.notxls' –

+0

Последующие изменения затронули проблему, упомянутую в моем предыдущем комментарии. –

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