-1

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

这是我的情况:我收到类似“在 15 号交叉口,驶入 M4 朝伦敦方向出口(109 英里,1 小时 41 分钟)”之类的字符串,需要提取“1 小时 41 分钟”部分并将其转换为秒,这谷歌告诉我是 6060 秒。有人能帮忙吗?

我还需要提取“109 英里”部分(可能是“0.3 英里”或“16 英尺”)。我不知道该怎么做。我可以做 Ajax 和 API 的事情,我只需要以秒为单位的距离和时间(对于 JavaScript 的 setTimeout)。

4

3 回答 3

2

通过 PHP,您可以将字符串转换为秒,如下所示:

strtotime("1 hour 9 minutes") - time();
于 2013-03-07T10:58:39.243 回答
2

使用 JavaScript 提取数据,您可以使用返回的字符串string.match(/\((\d+) mi, (.*)\)/)在哪里。string

119对于这种情况,这将为您提供一个带有 [1]和 [2]的数组1 hour 41 min。然后你可以将它 ajax 到服务器并做你需要做的事情。

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

于 2013-03-07T11:02:15.980 回答
1

有很多方法可以做到这一点,包括仅使用基于 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
于 2013-03-07T11:00:10.350 回答