PeTaGeh: Reguläre Ausdrücke

Beitrag lesen

Moinsen,
Dank erstmal für die guten Lösungsansätze. Haben mich in die richtige Bahn geschoben.
Bei Gonzo hatte es mit den grösseren Zahlen plötzlich irgendwie nicht mehr so richtig hingehauen.
Ich hab jetzt eine Lösung, die befriedigend ist:

$test = 'bla. bla.bla bla 1,565.43€ bli bli bli 599.77€ blo blo blo 0.56€ blu blu blu 1,459,232.45€</a>';
  $test_1 = preg_replace("/(([0-9]{1,3})(,([0-9]{3}))*).([0-9]{2}\x80)/e","strtr('\1', ',', '.') . ',' . '\5'",$test);

vielen Dank nochmal! :D

([0-9]+),*([0-9]+).([0-9]+€)

Das kann schonmal insofern nicht hinhauen, als dass du zum einen mit ,* "beliebig viele Kommas" verlangst (du möchtest aber beliebig ein-, zwei- oder dreistellige Zahlen mit einem Komma dahinter) und zum zweiten zwischen der zweiten und dritten Zahl mit dem . ein beliebiges Zeichen zulässt (du möchtest einen Punkt haben).

Ich täte es (mit PCRE-Mustern) einfacher probieren, zuerst:

\D([0-9]{1,3}),(([0-9]{3})+([,.][0-9,.]+)?)\s*€) -> $1.$2

Und anschließend:

\D([0-9]{1,3}).([0-9]{2}\s*€) -> $1,$2

Gruss, Peter

--
If kids had been influenced by Pacman, they'd be jumping around in dark rooms eating strange pills and listening to monotonous music these days.