Hello i was having trouble creating an array with regex. I have an excel sheet with various time formats including: 1h 51m 10.5s, 51m, 10m 10.5s, 5s and I need to convert the time down to minutes.
Currently my regex is as follows and does not work: /(([0-9]{1,2})h)?(([0-9]{1,2})m)?(([0-9]{1,2}\.[0-9]{0,2})s)?/
Cold any one help a noob out, Im trying to separate each segment in to an array's cell so i can manipulate it later.
My code for the entire function is as follows:
public function convertToMinutes($subject) {
//Regular Expression to remove text
$pattern = '/(([0-9]{1,2})h)?(([0-9]{1,2})m)?(([0-9]{1,2}\.[0-9]{0,2})s)?/';
$numbers = preg_split($pattern, $subject);
if (empty($numbers)) {
$this -> _flash('warning');
$return['errors'][] = __(sprintf('Regular Expression is wrong'), true);
} else {
//There are only hours, minutes and seconds
if (count($numbers) == 3) {
$totalMinutes = 0;
$hourMinutes = $numbers[0];
$minutes = $numbers[1];
$secondMinutes = $numbers[2];
$totalMinutes = $hourMinutes / 60;
$totalMinutes = $totalMinutes + ($secondMinutes * 60);
$totalMinutes = $totalMinutes + ($minutes);
return $totalMinutes;
debug(count($numbers));
}
// There is only minutes and seconds
elseif (count($numbers) == 2) {
$totalMinutes = 0;
$minutes = $numbers[0];
$secondMinutes = $numbers[1];
$totalMinutes = $totalMinutes + ($secondMinutes * 60);
$totalMinutes = $totalMinutes + ($minutes);
return $totalMinutes;debug(count($numbers));
} else {
//Return the minutes
return $numbers[0];
}
}
}