3v4l.org

run code in 300+ PHP versions simultaneously
<?php $string = '987ABC11-15; 77; 877; 66-68'; $pattern = '~(^\d+[A-Z]+)?\d+\D+\K~'; echo preg_replace_callback($pattern, function($m)use(&$prefix) { // var_export($m); // if you want to see if (isset($m[1])) $prefix = $m[1]; return $prefix; }, $string, -1, $count); echo "\nmickmackusa count = $count"; echo "\n---\n"; echo preg_replace_callback('/^(\d+[A-Z]+)|\d+/', function($m) use (&$pfx) { // more replacements, easier to comprehend if (!empty($m[1])) $pfx = $m[1]; else return $pfx . $m[0]; }, $string, -1, $count); echo "\nbobblebubble count = $count";
Output for 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.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
987ABC11-987ABC15; 987ABC77; 987ABC877; 987ABC66-987ABC68 mickmackusa count = 5 --- 987ABC11-987ABC15; 987ABC77; 987ABC877; 987ABC66-987ABC68 bobblebubble count = 7

preferences:
150.74 ms | 408 KiB | 5 Q