Список PHP определенных файлов в каталоге

Следующий код перечислит весь файл в каталоге

<?php
if ($handle = opendir('.')) {
    while (false !== ($file = readdir($handle)))
    {
        if (($file != ".") 
         && ($file != ".."))
        {
            $thelist .= '<LI><a href="'.$file.'">'.$file.'</a>';
        }
    }

    closedir($handle);
}
?>

<P>List of files:</p>
<UL>
<P><?=$thelist?></p>
</UL>

В то время как это - очень простой код, он делает задание.

Я теперь ищу способ перечислить ТОЛЬКО файлы, которые имеют .xml (или.XML) в конце, как я делаю это?

46
задан totallyNotLizards 6 January 2016 в 10:04
поделиться

4 ответа

if ($handle = opendir('.')) {
    while (false !== ($file = readdir($handle)))
    {
        if ($file != "." && $file != ".." && strtolower(substr($file, strrpos($file, '.') + 1)) == 'xml')
        {
            $thelist .= '<li><a href="'.$file.'">'.$file.'</a></li>';
        }
    }
    closedir($handle);
}

Простой способ посмотреть на расширение с помощью substr и strrpos

48
ответ дан 26 November 2019 в 19:58
поделиться

Самый простой ответ - поставить другое условие '. Xml' == strtolower (substr ($ file, -3)) .

Но я бы также рекомендовал использовать вместо него glob .

0
ответ дан 26 November 2019 в 19:58
поделиться

Вы захотите использовать glob ()

Пример:

$files = glob('/path/to/dir/*.xml');
193
ответ дан 26 November 2019 в 19:58
поделиться
$it = new RegexIterator(new DirectoryIterator("."), "/\\.xml\$/i"));

foreach ($it as $filename) {
    //...
}

Вы также можете использовать рекурсивные варианты итераторов для обхода всей иерархии каталогов.

10
ответ дан 26 November 2019 в 19:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: