Следующий код перечислит весь файл в каталоге
<?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) в конце, как я делаю это?
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
Самый простой ответ - поставить другое условие '. Xml' == strtolower (substr ($ file, -3))
.
Но я бы также рекомендовал использовать вместо него glob
.
$it = new RegexIterator(new DirectoryIterator("."), "/\\.xml\$/i"));
foreach ($it as $filename) {
//...
}
Вы также можете использовать рекурсивные варианты итераторов для обхода всей иерархии каталогов.