Php 函数获取MP3文件的ID3标记时,filesize()stat失败

Php 函数获取MP3文件的ID3标记时,filesize()stat失败,php,id3,Php,Id3,它适用于本地文件,但不适用于外部域。这是我的代码,我从中获得: 它仅适用于本地文件。您不能将远程mp3文件作为此函数的参数传递,这是毫无意义的。使用打开的文件必须是本地文件。对我来说也是一样 这个函数到底要加载什么?你说它不适用于外部域是什么意思 此行应仅适用于与此脚本存储在同一目录中的file.mp3 $song = tagReader("file.mp3"); 如果无法读取本地文件,则应检查该文件的读取权限 同样的原因可能不起作用 建议:字母数字数组索引应该使用引号 echo $s

它适用于本地文件,但不适用于外部域。这是我的代码,我从中获得:


它仅适用于本地文件。您不能将远程mp3文件作为此函数的参数传递,这是毫无意义的。使用打开的文件必须是本地文件。对我来说也是一样

这个函数到底要加载什么?你说它不适用于外部域是什么意思

此行应仅适用于与此脚本存储在同一目录中的file.mp3

  $song = tagReader("file.mp3");
如果无法读取本地文件,则应检查该文件的读取权限

同样的原因可能不起作用

建议:字母数字数组索引应该使用引号

  echo $song['Title']; // or 
  echo $song["Title"];
而不是

  echo $song[Title];

是的,它可能有效,但你还是不应该这样做。我建议使用单引号,以避免在某些特定情况下将变量名作为数组索引进行计算,例如$array['$index'])。

感谢所有帮助,我刚刚开始学习php的诀窍。。。我可以用像文件获取内容这样的东西吗?或者是否有其他方法临时将文件存储在本地?我知道我可以使用curl-to-wget,但是我不能在我的服务器上运行shell命令。或者只是下载文件的第一部分?我需要的所有信息都在开头…@robbiest,file\u get\u内容可以帮助您获取远程文件,然后在下载后使用此功能。关于ID3v2。。。是的,它位于文件流的开头,ID3v1位于末尾,但您不知道标记数据的大小。ID3v2没有ID3v1那么简单,它可能包含的字段超过这几个120+。有时,它可能包含非常大量的数据,并且您想要的标记可能接近标记流的末尾。您应该更好地学习PHP以及如何在流内部处理,这样您就可以编写自己的ID3v2提取器了。@Robbest,我想说的是,这并不像您想象的那么容易。我很好奇,你为什么要读远程文件?你是否得到它的所有者的许可,这样做可能是非法的,就像从YouTube下载一样。只是要意识到这一点。
  echo $song['Title']; // or 
  echo $song["Title"];
  echo $song[Title];