Youtube API v3 - 获取持续时间

时间:2015-07-15 05:56:41

标签: php youtube-api youtube-data-api

通过使用Youtube API v3,我将在下面的阵型中获得duarion。

PT3H32M50S

我想将其转换为03:32:50格式。

请注意:如果视频不是一小时,那么我将获得PT32M50S。在这种情况下,我应该得到00:32:50。

请引导我找到最佳解决方案。

4 个答案:

答案 0 :(得分:0)

使用str_replace非常简单易用的解决方案。的 DEMO

echo str_ireplace(array('PT', 'H', 'M', 'S'), array('0',':',':',''), 'PT3H32M50S');

答案 1 :(得分:0)

试试这个...... Demo Here

<?php
$duration_youtube='PT3H32M50S';
if (strpos($duration_youtube,'H') !== false)
{
    $duration_youtube_temp = $duration_youtube;
    preg_match('~PT(.*?)H~', $duration_youtube_temp, $duration_youtube_temp_out);

    $duration_youtube_temp_out_pad=str_pad($duration_youtube_temp_out[1], 2, '0', STR_PAD_LEFT);

    $duration_youtube=preg_replace("/".$duration_youtube_temp_out[1]."/",$duration_youtube_temp_out_pad,$duration_youtube,1);

    $duration_youtube=str_replace('PT','',$duration_youtube);
    $duration_youtube=str_replace('H',':',$duration_youtube);
    $duration_youtube=str_replace('M',':',$duration_youtube);
    $duration_youtube=str_replace('S','',$duration_youtube);
}
else
{
    $duration_youtube=str_replace('PT','00:',$duration_youtube);
    $duration_youtube=str_replace('M',':',$duration_youtube);
    $duration_youtube=str_replace('S','',$duration_youtube);
}
echo $duration_youtube;
?>

答案 2 :(得分:0)

function youtubeTime($yStr){
    $s=$m=$h='00';
    preg_match_all('/(\d+)/',$yStr,$parts);
    if(!empty($parts)){
        $ts=array_pop($parts[0]);
        $s = ($ts<10)? '0'.(int)$ts : $ts;
        $ms=array_pop($parts[0]);
        $m = ($ms<10)? '0'.(int)$ms : $ms;
        $hs=array_pop($parts[0]);
        $h = ($hs<10)? '0'.(int)$hs : $hs;
    }
    return $h.':'.$m.':'.$s;
}

答案 3 :(得分:0)

我有以下解决方案,适用于我所有可能的情况。

$duration = str_ireplace(array('PT', 'H', 'M', 'S'), array('',':',':',''),         
$youtubeArrData->items[0]->contentDetails->duration);
if(substr_count($duration, ':') == 0){
    $duration = "00:00:".$duration;
}
if(substr_count($duration, ':') == 1){
    $duration = "00:".$duration;
}
$video_Length = date("H:i:s.u", strtotime($duration));

希望这适用于所有人。