проблема с отображением всех файлов каталога - PullRequest
0 голосов
/ 01 июля 2010

Эй, ребята, я ищу способ показать все mp3-файлы в каталоге

Это мой код, чтобы получить это:

    if ($handle = opendir($dirPath)) {

       while (false !== ($file = readdir($handle))) {

         if ($file = ".mp3" && $file = "..") {
             echo '
             <track>
              <location>'.$dirPath.$file.'</location>
              <creator>'.$file.'</creator>
            </track>
            ';    

          }
       }
   closedir($handle);
}

Теперь я знаю, что этот скрипт будет показывать толькоmp3-файлы в родительском каталоге, но мне нужно показать все mp3-файлы во всем каталоге внутри родительского каталога

проблема в том, что этот код не может отображать файлы в подкаталогах!

Ответы [ 3 ]

0 голосов
/ 01 июля 2010

Этот код не будет работать вообще.Поскольку вы устанавливаете переменную $ file в "..", результатом будет много xml, содержащего $ dirPath и "..".

Это то, что вы ищете:)

$it = new RecursiveDirectoryIterator('path/to/files/');
foreach (new RecursiveIteratorIterator($it) as $file)
{
    echo $file->getPathname() . '<br />';
}
0 голосов
/ 01 июля 2010

Как сказал icktoofay, вам придется сделать рекурсивную функцию. также в вашем коде есть ошибка:

if ($file = ".mp3" && $file = "..") {

не будет работать (и if ($file == ".mp3" && $file == "..") { тоже неправильно). эта строка должна выглядеть так:

if (substr($file,-4) == ".mp3" || $file == "..") {

если вы хотите показать "..", иначе это просто так:

if (substr($file,-4) == ".mp3") {
0 голосов
/ 01 июля 2010

Вам потребуется сделать рекурсивную функцию для поиска всех MP3.

Кроме того, вы, вероятно, имели в виду if ($file == ".mp3" && $file == "..") { вместо if ($file = ".mp3" && $file = "..") {, и после того, как это изменилось, вы получите условие, которое всегдаложный.Что ты там пытаешься сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...