<?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