Felix Riesterer: suchen und ersetzen

Beitrag lesen

Lieber hanns,

mit preg_replace geht das spielend leicht. Dazu müsstest Du Dich ein klein wenig mit regulären Ausdrücken auskennen.

Beispiel:

 $string = 'alle-meine-Entchen-25-schwimmen-auf-dem-See';  
$ersetzung = '(Stück)';  
$ergebnis = preg_replace('~^(.*\D\d\d)(\D.*)$~', '\\1'.$ersetzung.'\\2', $string);

Obiges sollte dieses ausgeben: "alle-meine-Entchen-25(Stück)-schwimmen-auf-dem-See"

Dabei gehe ich in meinem Suchmuster davon aus, dass es sich um exakt zwei Ziffern (\d bedeutet Ziffer) handelt, denen eine Nicht-Ziffer (\D) vorausgeht, und auf die ebenso eine Nichtziffer folgt. Ein Punkt bedeutet "irgendein Zeichen", wobei standardmäßig Zeilenenden nicht gemeint sind. Das Sternchen hinter dem Punkt (also "irgendein Zeichen") bedeutet "beliebig viele davon, auch keines".
Die Klammern bedeutet "merke Dir das". Ich kann dann mit \1 auf den gemerkten Inhalt der ersten, und mit \2 auf dem gemerkten Inhalt der zweiten Klammer zurückgreifen (siehe zweites Argument der Funktion).

Liebe Grüße aus Ellwangen,

Felix Riesterer.