YouTube视频API不适用于以破折号开头的ID

YouTube视频API不适用于以破折号开头的ID,youtube,youtube-api,Youtube,Youtube Api,我正在从YouTube的API访问数据,一切正常,但我遇到的问题是,当videoID开头出现破折号(-)时,它不会返回json数据 $videoID = -FIHqoTcZog; $json = json_decode(file_get_contents("http://gdata.youtube.com/feeds/api/videos?q={$videoID}&alt=json")); 但是,我可以使用以下方法返回缩略图: $thumbnail = "http://i4.ytimg

我正在从YouTube的API访问数据,一切正常,但我遇到的问题是,当videoID开头出现破折号(-)时,它不会返回json数据

$videoID = -FIHqoTcZog;
$json = json_decode(file_get_contents("http://gdata.youtube.com/feeds/api/videos?q={$videoID}&alt=json"));
但是,我可以使用以下方法返回缩略图:

$thumbnail = "http://i4.ytimg.com/vi/".$videoID."/mqdefault.jpg";   
这是我用来从上面的json中提取我想要的信息的代码

$title = $json->{'feed'}->{'entry'}[0]->{'title'}->{'$t'};
$description = $json->{'feed'}->{'entry'}[0]->{'media$group'}->{'media$description'}->{'$t'};
$thumbnail = "http://i4.ytimg.com/vi/".$videoID."/mqdefault.jpg";   
$ratings = ((round($json->{'feed'}->{'entry'}[0]->{'gd$rating'}->{'average'}, 1)/$json->{'feed'}->{'entry'}[0]->{'gd$rating'}->{'max'})*100)."%";
$views = number_format($json->{'feed'}->{'entry'}[0]->{'yt$statistics'}->{'viewCount'});
$duration = $json->{'feed'}->{'entry'}[0]->{'media$group'}->{'yt$duration'}->{'seconds'};

你确定只有前面有破折号的ID才有问题吗?粘贴的代码不应该与任何Youtube ID一起使用,因为gdata提要作为JSON的一部分返回一些带有“$”字符的文本。该字符是一个PHP标识符,因此无论提要返回什么,在尝试运行json_decode函数时都会出现500个错误

解决此问题的一种方法是使用json_decode的第二个参数为您提供关联数组,而不是对象,如下所示:

$json = json_decode(file_get_contents("http://gdata.youtube.com/feeds/api/videos?q={$videoID}&alt=json"),true);
当然,这也需要使用数组,但随后的代码更改应该是最小的


如果使用完全相同的代码的其他视频没有出现错误,也许您可以将其发布到此处?

嗯,它确实适用于大多数其他视频,还有另一种视频ID类型不起作用,但我不记得它是什么。它是以一个非a-z0-9字符开始的,尽管我在上面发布了我的其余代码,那么我应该如何改变它来处理这个问题呢?