| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

14-11-2009, 21:28
|
|
MasterOfFreaks
Registrierter Benutzer
|
|
Registriert seit: Nov 2009
Beiträge: 7
|
|
[gelöst] RegEx: Zahlen aus String filtern
Hallo,
ich bin ein bisschen am verzweifeln. Ich versuche alle möglichen Zahlenkombinationen aus einem String zu filtern.
Mögliche Zahlenkombinationen:
Code:
Eingabe:
1 A 12 B 123.123 C 123,456 D 123.123,321 E 123 321 F
Mein momentaner Filterausdruck sieht so aus:
PHP-Code:
Filter:
preg_match_all("/[0-9]{1,10}[\,\.]?[0-9]*/u", $eingabe, $ausgabe);
PHP-Code:
Ausgabe:
Array ( [0] => Array ( [0] => 1 [1] => 12 [2] => 123.123 [3] => 123,456 [4] => 123.123 [5] => 321 [6] => 123 [7] => 321 ) )
Wie man sieht wird momentan noch die Zahl zerstückelt die mehrere Punkte oder Kommas enthält bzw. durch ein Leerzeichen getrennt wird. Kann jemand helfen, das diese Zahlenkombinationen nicht getrennt werden?
Viele Grüße
Master.of.Freaks
Geändert von MasterOfFreaks (14-11-2009 um 23:04 Uhr)
|

14-11-2009, 21:35
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Derzeit verlangst du in deinem Muster eine bis zehn Ziffern, dann optional einen Backslash oder ein Komma oder nochmal einen Backslash oder einen Punkt, und dann noch mal beliebig viele Ziffern.
Wenn du auch die Zahlen willst, in denen Komma oder Punkt mehrfach vorkommen können - dann passt du logischerweise dein Muster so an, dass es erst mal Ziffern verlangt, dann optional Ziffern oder Komma oder Punkt, und dann zum Abschluss noch mal Ziffern.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

14-11-2009, 21:54
|
|
MasterOfFreaks
Registrierter Benutzer
|
|
Registriert seit: Nov 2009
Beiträge: 7
|
|
Okay, wenn man das nochmal so geschrieben bekommt sieht man doch schon mal gleich klarer. Habe mein Filter nochmal angepasst:
PHP-Code:
preg_match_all("/[0-9]{1,}([\,\. ]?[0-9])*/u", $text, $ausgabe);
Code:
Array ( [0] => Array ( [0] => 1 [1] => 12 [2] => 123.123 [3] => 123,456 [4] => 123.123,321 [5] => 123 321 ) [1] => Array ( [0] => [1] => [2] => 3 [3] => 6 [4] => 1 [5] => 1 ) )
Array[0] sieht jetzt wirklich viel versprechend aus. Muss ich Array[1] als kollateral Schaden hinnehmen oder kann man den Filter noch weiter optimieren?
Viele Grüße
Master.of.Freaks
|

14-11-2009, 22:43
|
 |
fireweasel
Registrierter Benutzer
|
|
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
|
|
Zitat:
Zitat von MasterOfFreaks
Array[0] sieht jetzt wirklich viel versprechend aus. Muss ich Array[1] als kollateral Schaden hinnehmen oder kann man den Filter noch weiter optimieren?
|
?: ist dein Freund.
Und das /u erscheint mir unpassend. Keines deiner Suchmuster braucht UTF-8-Kodierung.
__________________
PHP-Code:
class Brick implements Throwable {
// ...
}
Geändert von fireweasel (14-11-2009 um 22:46 Uhr)
|

14-11-2009, 23:00
|
|
MasterOfFreaks
Registrierter Benutzer
|
|
Registriert seit: Nov 2009
Beiträge: 7
|
|
Super, alles klar, hier nochmal das ganze Beispiel:
PHP-Code:
preg_match_all("/[0-9]{1,}(?:[\,\. ]?[0-9])*/", $text, $ausgabe);
Der Unicode Modifier macht in dem Falle keinen Sinn, das stimmt.
Vielen Dank.
Viele Grüße
Master.of.Freaks
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|