Regulärer Ausdruck
RuD
- php
Seid gegrüßt!
ich versuche einen String zu teilen und in eine Tabelle zubekommen, also nur die "</td><td>"-Trennung reinzubekommen.
Ich habe u.a. einen Preis "44,12 Euro" also über
preg_replace("[0-9]{1,3},[0-9]{0,2} Euro", "</td><td>", $string);
auswerten. Nur kommt es ersten zum fehler
Warning: Unknown modifier '{' in ... on line 15
und zweites (wenns denn gehen sollte) ersetzt das script ja 44,12 Euro durch </td><td>. ich wollte aber nicht ersetzen sondern davor schreiben, also </td><td>44,12 Euro.
Kann mir jemand helfen? Danke schön schonmal im Voraus.
hi,
preg_replace("[0-9]{1,3},[0-9]{0,2} Euro", "</td><td>", $string);
auswerten. Nur kommt es ersten zum fehler
Warning: Unknown modifier '{' in ... on line 15
Da als erstes Zeichen [ verwendet wird, ist das der Delimiter deines regulären Ausdrucks.
Also ist ] kein Sonderzeichen mehr, weil keine öffnende eckige Klammer vorausgeht.
Also beendet das nächste vorkommende ] das Suchmuster, weil es der schließende Delimiter ist.
Also ist das nach dem Delimiter stehende { ein unbekannter Modifier.
gruß,
wahsaga
hi,
Also beendet das nächste vorkommende ] das Suchmuster, weil es der schließende Delimiter ist.
Sorry, das nächste [ ist natürlich der schließende Delimiter, weil beide Delimiter ja gleich sein müssen.
gruß,
wahsaga
echo $begrüßung;
Also beendet das nächste vorkommende ] das Suchmuster, weil es der schließende Delimiter ist.
Sorry, das nächste [ ist natürlich der schließende Delimiter, weil beide Delimiter ja gleich sein müssen.
Nö. Es sei dennn, PHP < 4.0.4 wird verwendet. (), {}, [], und <> sind seitdem auch gültige Begrenzer-Paare.
echo "$verabschiedung $name";
Seid gegrüßt!
ich komm ne weiter:
ich brauch den regex für "44,12 Euro" oder ähnlich.
also dacht ich mir: string fängt mit ner Zahl ([0-9]) an die 1-3-stellig ist ({1,3}), dannach kommt ein Komma, danach wieder ne Zahl ([0-9]{1,2}) dann ein freizeichen und dann "Euro". sieht immer so aus.
wo ist mein denkfehler?
P.S.:
http://www.php-resource.de/tutorials/read/10/1/
gudn tach!
preg_replace("/([1]{1,3}(,){1}[0-9]{0,2}(Euro){1}$)/", "$1</td><td>", $string);
^1 ^2 ^3 ^2
1. komma muss nicht escaped werden. und die einklammerung ist ueberfluessig.
2. {1} ist redundant, kann einfach weggelassen werden.
3. "Euro" muss nicht eingeklammert werden.
vielleicht genuegt ja schon einfach
preg_replace('/(\d Euro)/', '$1</td><td>', $string);
prost
seth
0-9 ↩︎
hi,
Nö. Es sei dennn, PHP < 4.0.4 wird verwendet. (), {}, [], und <> sind seitdem auch gültige Begrenzer-Paare.
Habe ich etwas anderes behauptet?
Ich sagte, _weil_ [ an öffnender Delimiter verwendet wird, wird das zweite auftauchende [ als schließender gewertet.
gruß,
wahsaga
echo $begrüßung;
Nö. Es sei dennn, PHP < 4.0.4 wird verwendet. (), {}, [], und <> sind seitdem auch gültige Begrenzer-Paare.
Habe ich etwas anderes behauptet?
Ja, du siehst diese Zeichen nicht als Paare sondern einzeln.
Ich sagte, _weil_ [ an öffnender Delimiter verwendet wird, wird das zweite auftauchende [ als schließender gewertet.
Und das ist eben nicht der Fall, sonst stünde auch 0 und nicht { in der Fehlermeldung. Wenn [ als öffnender Begrenzer verwendet wird kommt ] als schließender zur Anwendung. Das im OP nachfolgende { (das erste, dem die 1 folgt) wird schon als Modifizierer gewertet.
echo "$verabschiedung $name";
hi,
Wenn [ als öffnender Begrenzer verwendet wird kommt ] als schließender zur Anwendung.
Ah, danke - das war mir noch nicht bewusst.
gruß,
wahsaga
Seid gegrüßt!
preg_replace("[0-9]{1,3},[0-9]{0,2} Euro", "</td><td>",
Muss also der gesamte Ausdruck in [] oder was?
Also [0-9{1,},0-9{0,2} Euro] ?
Sei Du auch gegrüßt ;-)
Zu 2.: Wenn das Muster, nachdem Du suchst, in dem ersetzten String wieder vorkommen soll, musst Du das in runde Klammern setzen. Im "Ersetzen"-String setzt Du dann an geeignete Stelle ein "\1" (die Dinger werden nummeriert), in Deinem Fall also "</td><td>\1".
Viel Erfolg!
preg_replace("[0-9]{1,3},[0-9]{0,2} Euro", "</td><td>", $string);
und zweites (wenns denn gehen sollte) ersetzt das script ja 44,12 Euro durch </td><td>. ich wollte aber nicht ersetzen sondern davor schreiben, also </td><td>44,12 Euro.