【发布时间】:2015-07-15 05:56:40
【问题描述】:
通过使用 Youtube API v3,我得到了以下形式的 duarion。
PT3H32M50S
我想把它转换成 03:32:50 格式。
请注意:如果视频时长不超过一小时,我将获得 PT32M50S。在这种情况下,我应该得到 00:32:50。
请指导我找到最佳解决方案。
【问题讨论】:
标签: php youtube-api youtube-data-api
通过使用 Youtube API v3,我得到了以下形式的 duarion。
PT3H32M50S
我想把它转换成 03:32:50 格式。
请注意:如果视频时长不超过一小时,我将获得 PT32M50S。在这种情况下,我应该得到 00:32:50。
请指导我找到最佳解决方案。
【问题讨论】:
标签: php youtube-api youtube-data-api
我有以下解决方案,适用于我所有可能的情况。
$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));
希望这对每个人都有效。
【讨论】:
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;
}
【讨论】:
试试这个...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;
?>
【讨论】:
使用str_replace 非常简单易行的解决方案。 DEMO
echo str_ireplace(array('PT', 'H', 'M', 'S'), array('0',':',':',''), 'PT3H32M50S');
【讨论】: