【发布时间】:2014-08-15 02:31:21
【问题描述】:
如何将 PT2H34M25S 转换为 2:34:25
我搜索并使用了这段代码。我是正则表达式的新手,有人可以解释一下吗?并帮助我解决我的问题
function covtime($youtube_time){
preg_match_all('/(\d+)/',$youtube_time,$parts);
$hours = floor($parts[0][0]/60);
$minutes = $parts[0][0]%60;
$seconds = $parts[0][1];
if($hours != 0)
return $hours.':'.$minutes.':'.$seconds;
else
return $minutes.':'.$seconds;
}
但这段代码只给我 HH:MM
这么笨找到了解决方案:
function covtime($youtube_time){
preg_match_all('/(\d+)/',$youtube_time,$parts);
$hours = $parts[0][0];
$minutes = $parts[0][1];
$seconds = $parts[0][2];
if($seconds != 0)
return $hours.':'.$minutes.':'.$seconds;
else
return $hours.':'.$minutes;
}
【问题讨论】:
-
您确定它没有给您 MM:SS(条件中的第二种情况)吗?我没有看到可以输出 HH:MM 的代码路径。
-
它给了我 MM:SS 但不是 HH:MM:SS
-
你确定你用一个多小时的视频尝试过吗?此外,您在问题中给出的输入格式示例显然有 3 个单独的数字序列,那么为什么您的代码只考虑前 2 个?
-
刚刚找到解决方案已在上面发布,感谢您的帮助
-
@DanielEuchar,我用修改后的函数编辑了我的答案,供您查看。还有更多的验证可以完成。此外,看起来有人删除了您对问题所做的编辑。
标签: php regex youtube-api