2010-07-01 3 views
0

Эй, ребята им ищет способ показать все 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-файлы во всех каталогах внутри родительского каталога.

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

+1

смотри, например, http://stackoverflow.com/questions/2861834 – Artefacto

+0

* (ссылка) * [RecursiveDirectoryIterator] (http://de2.php.net/manual/en/class.recursivedirectoryiterator.php) – Gordon

+0

Возможный дубликат [PHP-списка конкретных файлы в каталоге] (http://stackoverflow.com/questions/3062154/php-list-of-specific-files-in-a-directory) – Gordon

ответ

0

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

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

$it = new RecursiveDirectoryIterator('path/to/files/'); 
foreach (new RecursiveIteratorIterator($it) as $file) 
{ 
    echo $file->getPathname() . '<br />'; 
} 
+0

Хороший момент, но 1-й способ применения фильтров mp3-файлов. 2-й адрес $ file-> getPathname() это не веб-адрес, а его системный путь: britney \ mylove \ heart.mp3, и это будет бесполезным путем для веб-приложения! –

+0

@MacTaylor [Введение в SPL] (http://www.phpro.org/tutorials/Introduction-to-SPL.html) должно иметь все, что вам нужно знать на данный момент – Gordon

+0

эй Гордон, единственное неполадок, веб-адрес . теперь адрес выглядит так: britney \ mylove \ heart.mp3 и не могу воспроизвести файл. любой момент для этого?! –

0

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

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

0

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

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

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

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

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

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

Моя основная цель - найти все файлы в каталоге, потому что я знаю, как найти файлы в родительском каталоге, и я сделал это. спасибо за ваш вопрос –

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