通过使用Youtube API v3,我将在下面的阵型中获得duarion。
PT3H32M50S
我想将其转换为03:32:50格式。
请注意:如果视频不是一小时,那么我将获得PT32M50S。在这种情况下,我应该得到00:32:50。
请引导我找到最佳解决方案。
答案 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));
希望这适用于所有人。