我使用下面的代码打印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) )
但我想要像这样的简单输出
FileName 4.mp3 Title Bahut Khubsurat Ghazal(mr-Jatt.Com)专辑1Loverz Choice(A Khubsurat Ghazal)(www.mzc.in)作者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;
}
答案 0 :(得分:0)
这是因为你要返回一个数组。如果要打印出数组元素的内容,则必须遍历数组并打印每个元素,而不是返回整个数组。
类似的东西:
foreach ($results as $key => $value)
echo $key . " " . $value;
答案 1 :(得分:0)
你可以尝试
foreach ( tagReader("4.mp3") as $name => $value ) {
printf("<p>%s:%s</p>", $name, $value);
}