PHP(Icecast) - 如何显示整首歌名?

时间:2013-05-31 02:04:26

标签: php stream icecast

现在我正在运行一个无线电服务器,我为它设置了一个WordPress博客。

我通过将其包含在每10秒自动刷新一次的iframe中来自动刷新小部件。

但是,我有一个编程问题。每当歌曲名称中有“ - ”($ artist [2])时,它会自动将其放入下一个($ artist [3])

这是我的php文件代码:     http://fonts.googleapis.com/css?family=Merriweather+Sans:400,700'rel ='stylesheet'type ='text / css'>          p {font-family:'Merriweather Sans',sans-serif; font-weight:400; }     b {font-family:'Merriweather Sans',sans-serif; font-weight:700; }          

<?php header("Refresh: 10")>

//Display IceCast Server Stats

$server = "direct.x86cam.com"; //IP (x.x.x.x or domain name)
    $iceport = "8000"; //Port
$iceurl = "stream.mp3"; //Mountpoint
    $online = "<font color=green><b>ONLINE</b> </font><br />";
    $offline = "<font color=red><b>OFFLINE</b></font><br />";

    if($fp = @fsockopen($server, $iceport, $errno, $errstr, '1')) {
            fclose($fp);
            $ice_status=$online;
            echo "<p><b>Stream Status:</b> $ice_status";
            $stats = file("http://" . $server . ":" . $iceport . "/status2.xsl");
            $status = explode(",", $stats[5]);
            $artist = explode("-", $status[5]);
    echo "<b>Artist:</b> " . $artist[1];
            echo "<b>Song:</b> " . $artist[2];
    echo "<br />";
            echo "<b>Listeners:</b> <b> " . $status[3] . "</b>";
            echo "</p>";
    //echo "<br />";
    //echo "<p><a href=http://" . $server . ":" . $iceport . "/" . $iceurl . " target=new><b>Listen!</b></a></p>";

     } else {

            $ice_status=$offline;
            echo "<p><b>Stream Status:</b> $ice_status";
    }

?>
<hr />
</center>

任何人都可以解释我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

问题必须在$ artist = explode(“ - ”,$ status [5]),如果艺术家姓名或歌曲名称包含' - ',它也会爆炸。

如果您可以更改源xsl,请将艺术家和歌曲放在不同的节点<artist>An-Artist</artist> <song>A-Song</song>中,使用php xml parse分隔时不会出现问题。

否则,您可能需要将艺术家和歌曲名称放在一起

  $status = explode(",", $stats[5]);
  $artist = substr($status[5], 3); //remove '-'
  echo "<b>Artist-Song:</b> " . $artist;