在php中使用preg_replace更改时间格式

时间:2010-02-24 01:59:45

标签: php regex replace pcre

我只是想知道我们是否可以使用preg replace

来做到这一点

就好像有时间一样

1h 38 min

可以改为

98 mins

2h 20 min

可以改为

140 mins

或者只是建议我任何其他随机函数,这是更简单的方法

感谢

3 个答案:

答案 0 :(得分:2)

这个简单的功能应该可以解决问题。但是,它没有对字符串格式进行验证。

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

答案 1 :(得分:0)

$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

对于5.3之前的php版本,你必须使用

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

答案 2 :(得分:0)

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