Lieber hanns,
es können allerdings beliebig viele ziffern sein, also
die zahlen von 1 bis 100.000
wenn diese Ziffern ohne Punkte dazwischen stehen, dann kann man das Suchmuster entsprechend einfach modifizieren:
$string = 'alle-meine-Entchen-25-schwimmen-auf-dem-See';
$ersetzung = '(Stück)';
$ergebnis = preg_replace('~(\D+\d+)(\D+)~', '\\1'.$ersetzung.'\\2', $string);
Ich habe nun meinem Muster gesagt "mindestens eine (das Pluszeichen) Nicht-Ziffer, gefolgt von mindestens einer Ziffer in Klammer 1 merken".
In meinem ersten Vorschlag hatte ich noch den Anfang (^-Zeichen) und das Ende ($-Zeichen) eingetragen, da aus Deinem ersten Posting anscheinend nur ein einziges Vorkommen gemeint war. Nach Deiner Antwort auf Ashura hin zu schließen ist dem wohl nicht so...
Wenn Du nun feste Stringbestandteile hast, dann kann man anstatt \D ebendiese einsetzen (nur auf Zeichen mit besonderen Bedeutungen achten).
Neues Beispiel:
$string = 'Das kostet €123456,25 bei mir.';
$ersetzung = ' (günstig, nicht wahr?!)';
$ergebnis = preg_replace('~(€\d+(?:[.,]\d+)?)( bei mir)~', '\\1'.$ersetzung.'\\2', $string);
Zeichen innerhalb von eckigen Klammern werden als Alternativen für ein einzelnes Zeichen verstanden. In meinem neuen Beispiel kann also auch eine Dezimalzahl mit Komma oder Punkt gefunden werden. Ein Fragezeichen bedeutet "höchstens einmal, also auch keinmal", und ermöglicht damit Ganzzahlen, als auch Dezimalzahlen, da der gesamte Ausdruck in der zweiten Klammer (die wegen des "?:" nicht behalten wird) nicht vorkommen muss, aber kann.
Liebe Grüße aus Ellwangen,
Felix Riesterer.