如何使用PHP将PHP内容保存到文件

时间:2014-04-30 16:35:57

标签: php xml getid3

您好,我刚刚制作了一个FLASH AS3 XML播放列表播放器,除了我必须输入所有XML的部分外,它的工作原理很棒。 我已经得到了一些人的帮助来编译这个效果很好的代码,但我希望能够将XML保存到文件而不仅仅是读取它。如果给定文件夹中的.mp3数量增加,则自行更新。

    require_once('getid3/getid3.php');
    $dir = $_GET['folder'];
    $xmlBody = '<?xml version="1.0" encoding="ISO-8859-1"?>';
    $xmlBody .= "<XML>";
    $getID3 = new getID3;
    $DirectoryToScan = 'SOUNDS';
    $dirHandle = opendir($dir);
    $strIsNull = "not found";
    $i = 0;
    while (($file = readdir($dirHandle)) !== false) {
       $FullFileName = realpath($dir.'/'.$file);
       if ((substr($FullFileName, 0, 1) != '.') && is_file($FullFileName)) {
         $i++;
         set_time_limit(30);
         $ThisFileInfo = $getID3->analyze($FullFileName);
         getid3_lib::CopyTagsToComments($ThisFileInfo);
         $xmlBody .= '<Song>';
         $xmlBody .= '<songNum>' . $i . '</songNum>
            <songURL>' .basename($ThisFileInfo['filenamepath']).'</songURL>
            <songArtist>' .(!empty($ThisFileInfo['comments_html']['artist']) ?  implode('<br>',$ThisFileInfo['comments_html']['artist'])  : $strIsNull) .'</songArtist>
            <songTitle>' .(!empty($ThisFileInfo['comments_html']['title']) ?implode('<br>', $ThisFileInfo['comments_html']['title'])  : $strIsNull) . '</songTitle>
            <songSize>'  .round($ThisFileInfo['audio']['bitrate'] / 1000).' kbps </songSize>
            <songDuration>' . $ThisFileInfo['playtime_string'].' </songDuration>';
          $xmlBody .= '</Song>';
       }
    }
    $xmlBody .= "</XML>";
    header('Content-type: text/xml');
    echo $xmlBody; 

1 个答案:

答案 0 :(得分:1)

尝试将file_put_contents('playlist.m3u', $xmlBody);添加到文件末尾 - 这会在playlist.m3u中保存播放列表的内容。您可以将它与您已有的所有代码一起使用,或者只是在不需要时禁用/删除回声。

关于你的第二个问题 - 为了使用新文件夹内容更新文件,你需要:

a)让另一个进程监视器进行更改,然后调用此php脚本/文件 b)您服务器上的Setup a cron job 要么 c)不时地(或从你的flash播放器)手动调用脚本,通过调用例如http://localhost/my-m3u-generator.php