Wenn Sie mit Zeichenfolgen handelt, die mehrere Nummer haben Teile, dann ist es nicht so einfach, mit Regex zu lösen, da Sie Zahlen haben können, die von einem numerischen Teil zu einem anderen überlaufen. Wenn Sie beispielsweise eine Nummer INV00-10-99
haben, die auf INV00-11-00
erhöht werden soll
endete ich mit dem Follow-up:
for ($i = strlen($string) - 1; $i >= 0; $i--) {
if (is_numeric($string[$i])) {
$most_significant_number = $i;
if ($string[$i] < 9) {
$string[$i] = $string[$i] + 1;
break;
}
// The number was a 9, set it to zero and continue.
$string[$i] = 0;
}
}
// If the most significant number was set to a zero it has overflowed so we
// need to prefix it with a '1'.
if ($string[$most_significant_number] === '0') {
$string = substr_replace($string, '1', $most_significant_number, 0);
}
+1 ich diese bevorzugen. –
Was ist, wenn ich eine Zeichenfolge wie "XXX-342" habe? es wird in $ Übereinstimmungen [0] oder $ Übereinstimmungen [1] sein? – tampe125
@codaddict: Denkst du nicht, dass Callback ein "kleiner" Overhead ist? Warum nicht normale '+ 1' verwenden? – zerkms