3v4l.org

run code in 300+ PHP versions simultaneously
<?php $re = '/^(?:([0-9]+) X,)? ?(?:([0-9]+) Y,)?(?: Z)?$/m'; $str = <<<_ 66 X, 55 Y, Z 66 X, 55 Y, 66 X, Z 55 Y, Z 66 X, 55 Y, \n _; preg_match_all($re, $str, $matches, PREG_SET_ORDER); foreach ($matches as $match) { unset($match[0]); foreach (['null', 'null'] as $key => $value) { if (!isset($match[$key + 1]) || $match[$key + 1] === '') $match[$key + 1] = $value; } echo implode(" - ", $match), PHP_EOL; }
Output for 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
66 - 55 66 - 55 66 - null null - 55 66 - null null - 55 null - null

preferences:
91.2 ms | 1941 KiB | 4 Q