0

次の 5 つの文字列があります (時間のように動作するはずです): 11-20 9:30-20:00 8-20 7-16,30 9.30-9.50

それらをすべて HH.HH-MM-MM の形式に変換する方法はあるのでしょうか。たとえば、11-20 は 11.00-20.00 に変換する必要があります。

4

2 に答える 2

2

これはどう:

$str = '11-20 9:30-20:00 8-20 7-16,30 9.30-9.50';
$result = preg_replace_callback('~([\d:,.]+)~', function($i) {
    $i[1] = str_replace(array(',', '.'), ':', $i[1]);
    if (strpos($i[1], ':') === false) {
        $i[1] .= ':00';
    }

    return $i[1];
}, $str);
var_dump($result);

http://codepad.viper-7.com/2esU4N

于 2012-04-27T09:45:54.853 に答える
1

私はこれを思いついた

<?php
class timeString {

public function timeString($string) {
        $exp = explode('-', $string);
        $timeString = array();
        foreach ($exp as $value) {
           $timeString[]= $this->normTime($value);
        }
        $time = implode('-', $timeString);
        return $time;
    }
 public function normTime($string) {
        $result = preg_replace_callback('~([\d:,.]+)~', function($i) {
                    $i[1] = str_replace(array(',', ':'), '.', $i[1]);
                    if (strpos($i[1], '.') === false) {
                        $i[1] .= '.00';
                    }

                    return $i[1];
                }, $string);
        return $result;
    }
}

これは、あなたが求めたものを正確に返します11.00-20.00

幸運を。

于 2012-04-27T10:29:56.953 に答える