PHP:如何解析源自YouTube JSON响应的关联数组?

时间:2011-12-13 11:55:11

标签: php json youtube youtube-api

我要做的是从YouTube频道获取每个视频的视频信息,然后将其打印在一个页面上,只有15个视频,因此它应该在使用限制范围内。

我已经阅读了一些关于网站和许多SO问题的教程,但我似乎仍然无法将我需要的东西放在一起:/

以下是我到目前为止的尝试:

$url = 'http://gdata.youtube.com/feeds/api/videos?max-results=20&alt=jsonc&orderby=published&format=5&safeSearch=none&author=OpticalExpressUK&v=2';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $url);
$body = curl_exec($ch);
curl_close($ch);
$data = json_decode($body, true);

echo '<pre>'; 
var_dump($data);
echo '</pre>'; 

// trying to get something out of the array!
echo $data[1]['title'];

此基础来自:php youtube json decode

我也看了Looping code using PHP

我的理想输出将是:

Video Title

Video Description

Rating

Anything else useful that is returned in the json response.

Embedded video

我知道可能只能获得视频的直接链接,但在阅读完之后,我确信如果能够实现这一点,我将能够将其嵌入。

我还将网址中的json更改为'jsonc',每次返回的内容之间似乎存在很大差异,我改变的原因是因为我确信在YouTube上它说要使用jsonc ?

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

根据您在http://pastebin.com/eZ6U3RmS上的粘贴,正确的代码为:

foreach($data['data']['items'] as $item) {
    echo $item['title'];
    echo $item['description'];
    echo $item['rating'];
    echo $item['player']['default'];
    // whatever you need....
}

答案 1 :(得分:0)

请求:http://gdata.youtube.com/feeds/api/videos/ [VIDEO_ID_HERE]会为您提供包含所有视频数据的xml回复或许这会对您有所帮助