开发者

changing time format with preg replace in php

i m just wo开发者_如何转开发ndering if we can do this with preg replace

like if there's time like

1h 38 min

can change to

98 mins

2h 20 min

can change to

140 mins

or just suggest me any other random function to this is simpler way

thanks


This simple function should do the trick. It does no verification on the string format, though.

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' */


$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";
}


$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";
}

prints

98 minutes
140 minutes

for php versions prior to 5.3 you'd have to use

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";
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜