我需要转换成“1小时9分钟”之类的东西;PHP中的秒数

I need to convert something like "1 hour 9 mins" to seconds in PHP

本文关键字:PHP 转换 9分钟 1小时      更新时间:2023-09-26

我正在编写一个基于谷歌API的在线导航应用程序,需要对文本到语音和弹出窗口进行定时。

这是我的情况:我得到像"在15号路口,出口到M4向伦敦(109英里,1小时41分钟)"这样的字符串,需要提取"1小时41分钟"部分并将其转换为秒,谷歌告诉我是6060秒。有人能帮忙吗?

我还需要提取"109英里"部分(可能是"0.3英里",或"16英尺")。我不知道该怎么做。我可以做Ajax和API的东西,我只需要距离和时间的秒(JavaScript的setTimeout)。

使用JavaScript提取数据,您可以使用string.match(/'(('d+) mi, (.*)')/),其中string是您返回的字符串。

在这种情况下,这将得到一个包含119的[1]和1 hour 41 min的[2]的数组。然后,您可以将它ajax到服务器,并做您需要做的事情。

也许一个更好的正则表达式是 string.match(/'(('d+) (mi|ft), (.*)')$/),现在你知道第一个数字是mi还是ft

PHP可以将字符串转换为秒:

strtotime("1 hour 9 minutes") - time();

有很多方法可以做到这一点,包括使用基于stripos(x,y) &只有Substr (x,y),加上一个修剪的东西来删除空白…

函数如下:

function extract_unit($string, $start, $end)
{
    $pos = stripos($string, $start);
    $str = substr($string, $pos);
    $str_two = substr($str, strlen($start));
    $second_pos = stripos($str_two, $end);
    $str_three = substr($str_two, 0, $second_pos);
    $unit = trim($str_three);
    return $unit;
}

点击这里阅读更多。

在你的情况下使用的例子:

$text = '1 hour 9 mins';
$hours = (int)extract_unit($text, '', 'hour'); // Returns 1
$mins = (int)extract_unit($text, 'hour', 'mins'); // Returns 9
$secs = ($hours*3600) + ($mins*60); // Returns 4140