2012-04-27 5 views

ответ

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

1

здание в каком zerkms я придумал этот

<?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.

Удачи.

Смежные вопросы