开发者

changing time format with preg replace in php

开发者 https://www.devze.com 2022-12-21 05:34 出处:网络
i m just wo开发者_如何转开发ndering if we can do this with preg replace like if there\'s time like

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

精彩评论

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

关注公众号