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

preferences:
64.1 ms | 405 KiB | 5 Q