上篇文章说到如何获取youtube视频信息,但是如何将里面的时间 duration =>'PT1H34M25S' 转换为时分秒的格式呢?
它这个时间格式为ISO 8601字符串. PT代表时间持续时间,1H是1小时,34M是34分钟,25S是25秒。
话不多说上代码:
方法1,得出的数字5665是 秒数。主要是通过正则格式了duration。
function getDuration($duration)
{
preg_match_all("/PT(\d+H)?(\d+M)?(\d+S)?/", $duration, $matches);
$hours = strlen($matches[1][0]) == 0 ? 0 : substr($matches[1][0], 0, strlen($matches[1][0]) - 1);
$minutes = strlen($matches[2][0]) == 0 ? 0 : substr($matches[2][0], 0, strlen($matches[2][0]) - 1);
$seconds = strlen($matches[3][0]) == 0 ? 0 : substr($matches[3][0], 0, strlen($matches[3][0]) - 1);
return 3600 * $hours + 60 * $minutes + $seconds;
}
echo getDuration('PT1H34M25S');
result: 5665