изменение формата времени с помощью preg replace в php - PullRequest
1 голос
/ 24 февраля 2010

Мне просто интересно, можем ли мы сделать это с помощью preg replace

как будто есть время как

1h 38 min

может измениться на

98 mins

2h 20 min

может измениться на

140 mins

или просто предложите мне любую другую случайную функцию, чтобы это было проще

спасибо

Ответы [ 3 ]

2 голосов
/ 24 февраля 2010

Эта простая функция должна помочь. Хотя он не проверяет формат строки.

function reformat_time_string($timestr) {
    $vals = sscanf($timestr, "%dh %dm");
    $total_min = ($vals[0] * 60) + $vals[1];
    return "$total_min mins";
}

$timestr = "2h 15m";
echo reformat_time_string($timestr); /* echoes '135 mins' */
0 голосов
/ 24 февраля 2010
$str="1h 38 min";
$s = explode(" ",$str);
if ( strpos ( $s[0] ,"h" ) !==FALSE) {
    $hr=str_replace("h","",$s[0]);
    print ($hr*60) + $s[1]."\n";
}
0 голосов
/ 24 февраля 2010
$pattern = '!(\d+)\s*h\s*(\d+)\s*min!';
foreach( array('1h 38 min', '2h 20 min') as $input) {
  echo preg_replace_callback($pattern, function($x) { return ($x[1]*60+$x[2]).' minutes'; }, $input), "\n";
}

печать

98 minutes
140 minutes

для версий php до 5.3 вы должны использовать

function foo($x) {
  return ($x[1]*60+$x[2]).' minutes';
}
$pattern = '!(\d+)\s*h\s*(\d+)\s*min!';
foreach( array('1h 38 min', '2h 20 min') as $input) {
  echo preg_replace_callback($pattern, 'foo', $input), "\n";
}
...