-1

私はGoogleの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あるかなどを使用できます。

これにより、その場合は[1]with119と[2]withの配列が得られます1 hour 41 min。次に、それをサーバーにajaxして、必要なことを実行できます。

おそらく、より良い正規表現は string.match(/\((\d+) (mi|ft), (.*)\)$/)です。これで、最初の数値がmiftかがわかります。

于 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 に答える