-1

以下のコードを使用して MP2 ファイルの id3 タグを出力していますが、出力はこの形式になっています

Array ( [FileName] => 4.mp3 [TAG] => ID3 [Version] => 3.0 [Title] => &Bahut Khubsurat Ghazal (mr-Jatt.Com) [Album] => 1Loverz Choice (A Khubsurat Ghazal) (www.mzc.in) [Author] => DJ Badboy (mr-Jatt.Com) [Track] => (www.mzc.in) ) 

しかし、私はこのようなプレーンな出力が欲しい

ファイル名 4.mp3 タイトル Bahut Khubsurat Ghazal (mr-Jatt.Com) Album 1Loverz Choice (A Khubsurat Ghazal) (www.mzc.in) Author DJ Badboy (mr-Jatt.Com) Track (www.mzc.in)

私のコードは

print_r(tagReader("4.mp3"));
// ------------------------------
function tagReader($file) {
    $id3v23 = array("TIT2","TALB","TPE1","TRCK","TDRC","TLEN","USLT");
    $id3v22 = array("TT2","TAL","TP1","TRK","TYE","TLE","ULT");
    $fsize = filesize($file);
    $fd = fopen($file, "r");
    $tag = fread($fd, $fsize);
    $tmp = "";
    fclose($fd);
    if (substr($tag, 0, 3) == "ID3") {
        $result['FileName'] = $file;
        $result['TAG'] = substr($tag, 0, 3);
        $result['Version'] = hexdec(bin2hex(substr($tag, 3, 1))) . "." . hexdec(bin2hex(substr($tag, 4, 1)));
    }
    if ($result['Version'] == "4.0" || $result['Version'] == "3.0") {
        for($i = 0; $i < count($id3v23); $i ++) {
            if (strpos($tag, $id3v23[$i] . chr(0)) != FALSE) {
                $pos = strpos($tag, $id3v23[$i] . chr(0));
                $len = hexdec(bin2hex(substr($tag, ($pos + 5), 3)));
                $data = substr($tag, $pos, 9 + $len);
                for($a = 0; $a < strlen($data); $a ++) {
                    $char = substr($data, $a, 1);
                    if ($char >= " " && $char <= "~")
                        $tmp .= $char;
                }
                if (substr($tmp, 0, 4) == "TIT2")
                    $result['Title'] = substr($tmp, 4);
                if (substr($tmp, 0, 4) == "TALB")
                    $result['Album'] = substr($tmp, 4);
                if (substr($tmp, 0, 4) == "TPE1")
                    $result['Author'] = substr($tmp, 4);
                if (substr($tmp, 0, 4) == "TRCK")
                    $result['Track'] = substr($tmp, 4);
                if (substr($tmp, 0, 4) == "TDRC")
                    $result['Year'] = substr($tmp, 4);
                if (substr($tmp, 0, 4) == "TLEN")
                    $result['Lenght'] = substr($tmp, 4);
                if (substr($tmp, 0, 4) == "USLT")
                    $result['Lyric'] = substr($tmp, 7);
                $tmp = "";
            }
        }
    }
    if ($result['Version'] == "2.0") {
        for($i = 0; $i < count($id3v22); $i ++) {
            if (strpos($tag, $id3v22[$i] . chr(0)) != FALSE) {
                $pos = strpos($tag, $id3v22[$i] . chr(0));
                $len = hexdec(bin2hex(substr($tag, ($pos + 3), 3)));
                $data = substr($tag, $pos, 6 + $len);
                for($a = 0; $a < strlen($data); $a ++) {
                    $char = substr($data, $a, 1);
                    if ($char >= " " && $char <= "~")
                        $tmp .= $char;
                }
                if (substr($tmp, 0, 3) == "TT2")
                    $result['Title'] = substr($tmp, 3);
                if (substr($tmp, 0, 3) == "TAL")
                    $result['Album'] = substr($tmp, 3);
                if (substr($tmp, 0, 3) == "TP1")
                    $result['Author'] = substr($tmp, 3);
                if (substr($tmp, 0, 3) == "TRK")
                    $result['Track'] = substr($tmp, 3);
                if (substr($tmp, 0, 3) == "TYE")
                    $result['Year'] = substr($tmp, 3);
                if (substr($tmp, 0, 3) == "TLE")
                    $result['Lenght'] = substr($tmp, 3);
                if (substr($tmp, 0, 3) == "ULT")
                    $result['Lyric'] = substr($tmp, 6);
                $tmp = "";
            }
        }
    }
    return $result;
}
4

2 に答える 2

0

あなたが試すことができます

foreach ( tagReader("4.mp3") as $name => $value ) {
    printf("<p>%s:%s</p>", $name, $value);
}
于 2012-10-12T16:02:02.540 に答える
0

これは、配列を返すためです。配列の要素の内容を出力したい場合は、配列全体を返すのではなく、配列をループして各要素を出力する必要があります。

何かのようなもの:

foreach ($results as $key => $value)
    echo $key . " " . $value;
于 2012-10-12T15:59:36.613 に答える