Php Youtube API v3-获取持续时间

Php Youtube API v3-获取持续时间,php,youtube-api,youtube-data-api,Php,Youtube Api,Youtube Data Api,通过使用Youtube API v3,我得到了以下信息中的duarion PT3H32M50S 我想把它转换成03:32:50格式 请注意:如果视频不是一小时长,我将获得PT32M50S。在这种情况下,我应该得到00:32:50 请指导我找到最好的解决方案。使用str\u replace非常简单易用的解决方案 echo str_ireplace(array('PT', 'H', 'M', 'S'), array('0',':',':',''), 'PT3H32M50S'); 试试这个 功能

通过使用Youtube API v3,我得到了以下信息中的duarion

PT3H32M50S
我想把它转换成03:32:50格式

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


请指导我找到最好的解决方案。

使用
str\u replace
非常简单易用的解决方案

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


功能YouTube时间($yStr){
$s=$m=$h='00';
preg_match_all(“/(\d+)/”,$yStr,$parts);
如果(!空($parts)){
$ts=数组_pop($parts[0]);

$s=($ts我得到了下面的解决方案,它适用于我所有可能的场景

$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));
希望这对每个人都有效。

最终输出类似于“3:32:50”。我希望它类似于“03:32:50”
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;
}
$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));