3v4l.org

run code in 300+ PHP versions simultaneously
<?php $strings = [ <<<STRING 1 + 2 * (3 + (23 + 53 - (132 / 5) + 5) - 1) + 2 / 'test + string' - 52 STRING, <<<STRING 1+2*(3+(23+53-(132/5)+5)-1)+2/'test+string'-52 STRING ]; foreach ($strings as $str) { var_export( preg_split( "~(?:(\((?:[^()]+|(?1))*\))|'[^']*'|[\d.]+|[*/^+-])\K ?~", $str, -1, PREG_SPLIT_NO_EMPTY ) ); echo "\n"; }
Output for 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
array ( 0 => '1', 1 => '+', 2 => '2', 3 => '*', 4 => '(3 + (23 + 53 - (132 / 5) + 5) - 1)', 5 => '+', 6 => '2', 7 => '/', 8 => '\'test + string\'', 9 => '-', 10 => '52', ) array ( 0 => '1', 1 => '+', 2 => '2', 3 => '*', 4 => '(3+(23+53-(132/5)+5)-1)', 5 => '+', 6 => '2', 7 => '/', 8 => '\'test+string\'', 9 => '-', 10 => '52', )

preferences:
129.77 ms | 1450 KiB | 4 Q