用php脚本获取youtube标题

时间:2016-07-29 08:34:58

标签: php youtube youtube-data-api

我想在变量中获得youtube视频的标题,但我尝试过的所有内容都无法正常工作。下面代码的一部分返回变量$ output:

中的标题片段
  

{" items":[{" snippet":{       " title":" Hardwell Live 2016迈阿密超音乐节" }}}

但是我怎么才能在变量中只获得标题?

<?php


function curl_download($Url){

    // is cURL installed yet?
    if (!function_exists('curl_init')){
        die('Sorry cURL is not installed!');
    }

    // OK cool - then let's create a new cURL resource handle
    $ch = curl_init();

    // Now set some options (most are optional)

    // Set URL to download
    curl_setopt($ch, CURLOPT_URL, $Url);


    // Include header in result? (0 = yes, 1 = no)
    curl_setopt($ch, CURLOPT_HEADER, 0);

    // Should cURL return or print out the data? (true = return, false = print)
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    // Timeout in seconds
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);

    // Download the given URL, and return output
    $output = curl_exec($ch);

    // Close the cURL resource, and free system resources
    curl_close($ch);

    return $output;
}

$response = curl_download('https://www.googleapis.com/youtube/v3/videos?id=m1ssAFzaCsU&key=AIzaSyBj5GoJlQ4XzebaG6H2tp_WVuQ03JEOOss&fields=items(snippet(title))&part=snippet');

if ($response) {

    $xml   = new SimpleXMLElement($response);
    $title = (string) $xml->title;
    echo $title;

} else {

    // Error handling.

                echo 'error';
}

?>

1 个答案:

答案 0 :(得分:1)

$output是一个JSON字符串,使用json_decode来解析它:

$output = '{ "items": [ { "snippet": { "title": "Hardwell Live at Ultra Music Festival Miami 2016" } } ] }';
$output_decoded = json_decode($output);
$title = $output_decoded->items[0]->snippet->title;
// $title is now 'Hardwell Live at Ultra Music Festival Miami 2016';

适应您的代码:

<?php


function curl_download($Url){

    // is cURL installed yet?
    if (!function_exists('curl_init')){
        die('Sorry cURL is not installed!');
    }

    // OK cool - then let's create a new cURL resource handle
    $ch = curl_init();

    // Now set some options (most are optional)

    // Set URL to download
    curl_setopt($ch, CURLOPT_URL, $Url);


    // Include header in result? (0 = yes, 1 = no)
    curl_setopt($ch, CURLOPT_HEADER, 0);

    // Should cURL return or print out the data? (true = return, false = print)
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    // Timeout in seconds
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);

    // Download the given URL, and return output
    $output = curl_exec($ch);

    // Close the cURL resource, and free system resources
    curl_close($ch);

    return $output;
}

$response = curl_download('https://www.googleapis.com/youtube/v3/videos?id=m1ssAFzaCsU&key=AIzaSyBj5GoJlQ4XzebaG6H2tp_WVuQ03JEOOss&fields=items(snippet(title))&part=snippet');

if ($response) {

    $response_decoded = json_decode($response);
    $title = $response_decoded->items[0]->snippet->title;
    echo $title;

} else {

    // Error handling.

                echo 'error';
}

?>