目前当你获得youtube时长时,你会得到类似PT3M10S
的内容。
下面的代码将其改为3:10
。然而,我希望只得到秒,所以190
将是输出。
$duration = str_replace(array("PT","M","S"), array("",":",""),$duration);
您可以尝试使用正则表达式来获取值,然后从中获得总秒数。比如:
$duration="PT3M10S";
$pattern='/PT('d+)M('d+)S/';
preg_match($pattern,$duration,$matches);
$seconds=$matches[1]*60+$matches[2];
该模式将分钟放入第一组,秒放入下一组。$matches将包含调用preg_match()后匹配的组。您需要获得组1和组2,因为匹配中的组0是完整匹配的文本。在本例中为PT3M10S
如下图:
$youtube_duration = $vinfo['duration'];
$interval = new DateInterval(youtube_duration);
$seconds = $interval->h * 3600 + $interval->i * 60 + $interval->s;
function covtime($youtube_time) {
preg_match_all('/('d+)/', $youtube_time, $parts);
$h = preg_match('/H/', $youtube_time);
$m = preg_match('/M/', $youtube_time);
$s = preg_match('/S/', $youtube_time);
if ($h && $m && $s) {
$hours = $parts[0][0];
$minutes = $parts[0][1];
$seconds = $parts[0][2];
if ($minutes < 10) {
$minutes = '0' . $parts[0][1];
}
if ($seconds < 10) {
$seconds = '0' . $parts[0][2];
}
echo $hours . ':' . $minutes . ':' . $seconds;
} else if ($h && $m) {
$hours = $parts[0][0];
$minutes = $parts[0][1];
$seconds = '00';
if ($minutes < 10) {
$minutes = '0' . $parts[0][1];
}
echo $hours . ':' . $minutes . ':' . $seconds;
} else if ($m && $s) {
$minutes = $parts[0][0];
$seconds = $parts[0][1];
if ($seconds < 10) {
$seconds = '0' . $parts[0][1];
}
echo $minutes . ':' . $seconds;
} else if ($h && $s) {
$hours = $parts[0][0];
$minutes = '00';
$seconds = $parts[0][1];
if ($seconds < 10) {
$seconds = '0' . $parts[0][1];
}
echo $hours . ':' . $minutes . ':' . $seconds;
} else if ($h) {
$hours = $parts[0][0];
$minutes = '00';
$seconds = '00';
echo $hours . ':' . $minutes . ':' . $seconds;
} else if ($m) {
$minutes = $parts[0][0];
$seconds = '00';
echo $minutes . ':' . $seconds;
} else if ($s) {
$minutes = '0';
$seconds = $parts[0][0];
if ($seconds < 10) {
$seconds = '0' . $parts[0][0];
}
echo $minutes . ':' . $seconds;
}
}
echo covtime(PT1H2M3S);
echo pt2sec("PT3M52S");
function pt2sec($str) {
preg_match("@PT((?P<hour>[0-9]+)H)?((?P<min>[0-9]+)M)?((?P<sec>[0-9]+)S)?@", $str, $m);
return (isset($m["hour"])?$m["hour"]*3600:0)+(isset($m["min"])?$m["min"]*60:0)+(isset($m["sec"])?$m["sec"]:0);
}