Hello Nico,
=> _12_3. Damit könnte ich leben und die Leerzeichen per str_replace() entfernen. Aber vielleicht gehts ja auch per RegEx...
Zwar spät, aber trotzdem noch Senf von mir zu deiner Wurst:
Es geht selbstverständlich auch ohne Regular Expressions. Man sollte sogar ersteinmal die Regeln und Bedingungen ohne RegEx festlegen. Die Entscheidung, ob man dann später immer noch RegEx benutzt, ist erst der zweite Schritt.
- es gibt einen String mit einem Aufbau, ähnlich
" Projekt 123 456, (Müller) 0531/4708-0".
**- Die Codierung ist UTF8 ** - Alle Ziffern und Zeichen lt. Liste [1-9, ' ', '-'], die auf das Schlüsselwort "Prokekt" folgen, sollen gefunden werden ...
- bis zum Auftreten eines Zeichens, das nicht in der Liste enthalten ist (Stopper).
-AnschließendAußerdem soll die so extrahierte Zeichenkette von allen Nicht-Ziffernzeichen befreit werden
Sowas geht also mit den Stringfunktionen von PHP
- mb_strpos()
- einer Schleife
- Stringvergleichen (Ist das Zeichen an der Position in der Liste?)
- Stringkonkatenation (Aufsammeln der gesuchten Ziffern im Ergebnis)
So ähnlich müssen die Raketengedanken auch abgelaufen sein ;-)
Der Vorteil einer explizit zusammengebauten Funktion ist sicherlich, dass man ihre Funktionsweise auch später noch ohne ausfühliche Dokumentation nachvollziehen kann. Bei Konstruktionen mit Regular Expressions würde ich mir die Gedankengänge hingegen ganz genau notieren.
Dass gute RexExe in PHP schneller sind, als explizite Funktionen, insbesondere dann, wenn die RegEx-Maschine im selben Script mehrmals benutzt wird, haben wir neulich schon gehabt. Bei einmaliger Anwendung sind die Unterschiede allerdings kaum messbar.
Glück Auf
Tom vom Berg