我只是想知道我们是否可以使用preg replace
来做到这一点就好像有时间一样
1h 38 min
可以改为
98 mins
2h 20 min
可以改为
140 mins
或者只是建议我任何其他随机函数,这是更简单的方法
感谢
答案 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";
}