使用 PHP 将字符串转换为秒

Convert a string to seconds with PHP

我在 PHP 中有字符串“6m15s”,我想将其转换为时间或理想情况下为秒。我正在使用 strtotime() 函数,例如:

$time = date('H:i:s', strtotime('6m15s'));
echo $time;

但我只得到“01:00:00”。这是否可以转换我的字符串?如果可以,最好的方法是什么?

你可以使用 substr():

$string = '6m15s';
$minute = substr($string, 0, 1);
$second = substr($string, 2, 2);
echo date('H:i:s', strtotime("00:$minute:$second"));
// outputs 00:06:15

如果您要获取总秒数,则如下所示:

preg_match('/((?<h>[\d]+)h)?((?<m>[\d]+)m)?((?<s>[\d]+)s?)/', $var, $m);

echo ($m['h']* 60 + $m['m']) * 60 + $m['s'];  // 375

这也会查找几个小时,如 1h6m15s

如果您正在使用修复模式,那么您可以构建一个方法,例如:

function stringToSecondByPattern($subject, $pattern = '/(\d+)m(\d+)s/') {

    $matches = [];
    preg_match($pattern, $subject, $matches);

    list($original, $minuets, $seconds) = $matches;

    $secondsSum = $seconds + ($minuets * 60);

    return $secondsSum;
}

print stringToSecondByPattern('6m15s');