Hallo Nico R.,
ich habe das jetzt mal in onlinephp.io probiert.
- verwende bitte {1,3} statt {0,3}. Oder willst Du unbedingt ",50" erkennen können? Wenn ich {0,3} verwende, erhalte ich eine Menge "Nulltreffer".
- lass die äußeren Klammern weg, die sind unnötig und erzeugen lediglich ein zweites Subarray im Ergebnis, das mit dem ersten Subarray identisch ist.
- du kannst [0-9] mit \d abkürzen
- wenn du außerhalb von [] nach einem Punkt suchen willst, musst Du ihn mit Backslash escapen, weil ein Punkt beliebige Zeichen matcht. Ich habe den Match auf - deshalb etwas geändert.
$a = "Hallo 321 und 123.45 oder 123,45 Welt 12,- für 12.- Euro";
$res = [];
preg_match_all("/\d{1,3}([,.](\d{2}|-))?/", $a, $res);
var_dump($res);
liefert mir in $res[0] alle 5 Zahlen.
Rolf
--
sumpsi - posui - obstruxi
sumpsi - posui - obstruxi