显示目录的所有文件的问题

时间:2010-07-01 07:54:03

标签: php directory

嘿伙计们正在寻找一种方法来显示目录中的所有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 :(得分:0)

你必须做一个递归函数来搜索所有的MP3。

此外,您可能意味着if ($file == ".mp3" && $file == "..") {而不是if ($file = ".mp3" && $file = "..") {,并且在更改之后,您会得到一个始终为假的条件。你想在那里做什么?

答案 1 :(得分:0)

该代码根本不起作用。当你将$ file变量设置为“..”时,结果将是很多包含$ dirPath和“..”的xml。

这就是你要找的东西:)

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

答案 2 :(得分:0)

像icktoofay说的那样,你必须做一个递归函数。另外,您的代码有错误:

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

不起作用(if ($file == ".mp3" && $file == "..") {也是错误的)。该行应如下所示:

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

如果你想显示“..” - 否则它就像这样:

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