3v4l.org

run code in 300+ PHP versions simultaneously
<?php function scholar_parse_time($time) { if (preg_match('/^\s*(?P<hour>\d+)(?>:(?P<minute>\d+))?(?>:(?P<second>\d+(\.\d*)?))?\s*$/', $time, $match)) { $h = intval($match['hour']); $m = isset($match['minute']) ? intval($match['minute']) : null; $s = isset($match['second']) ? floatval($match['second']) : null; if ($h < 24 && (null === $m || $m < 60) && (null === $s || $s < 60)) { if (null === $s) { $is = null; $ms = null; } else { $is = intval($s); $ms = round(($s - $is) * 1000); } return array( 'hour' => $h, 'minute' => $m, 'second' => $is, 'millis' => $ms, 'iso' => null === $m ? sprintf('%02d', $h) : (null === $s ? sprintf('%02d:%02d', $h, $m) : sprintf('%02d:%02d:%02d', $h, $m, $s) ), ); } } return false; } var_dump(scholar_parse_time('0')); var_dump(scholar_parse_time('0:1:1')); var_dump(scholar_parse_time('0:1:1.1')); var_dump(scholar_parse_time('0:1:1.'));
Output for git.master, git.master_jit, rfc.property-hooks
array(5) { ["hour"]=> int(0) ["minute"]=> NULL ["second"]=> NULL ["millis"]=> NULL ["iso"]=> string(2) "00" } array(5) { ["hour"]=> int(0) ["minute"]=> int(1) ["second"]=> int(1) ["millis"]=> float(0) ["iso"]=> string(8) "00:01:01" } array(5) { ["hour"]=> int(0) ["minute"]=> int(1) ["second"]=> int(1) ["millis"]=> float(100) ["iso"]=> string(8) "00:01:01" } array(5) { ["hour"]=> int(0) ["minute"]=> int(1) ["second"]=> int(1) ["millis"]=> float(0) ["iso"]=> string(8) "00:01:01" }

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
44.31 ms | 402 KiB | 8 Q