marcus-42
Goto Top

RegularExpression - Leerzeichen

Hallo,

vermutlich liegt es daran, dass ich sie so selten nutze: Mit regulären Ausdrücken stehe ich auf Kriegsfuß. Vielleicht mag mir jemand helfen:

Ich habe eine Zeichenfolge mit ideal folgendem Aufbau:

A123-456X

und möchte hieraus den Zahlenwert 123456 extrahieren.

In der Praxis - viele Anwender - kommen diverse Abweichungen vor, die ebenfalls erkannt werden wollen:

- auch 7- und mehrstellige Ausgaben sind möglich ("-" als Tausendertrennzeichen, also auch A-12-345-678)

- manchmal fehlt der Bindestrich (A123456X),

- manchmal wird der Bindestrich durch ein Leerzeichen ersetzt (A123 456X),

- mal um ein Leerzeichen erweitert (A123 - 456X).


Soweit bin ich gekommen:

preg_match('/A[0-9]+-\\d\\d\\dX/i', $quelle, $ziel);


Kann mir jemand mit den Sonderfällen weiterhelfen?


Viele Grüße
Marcus


PS Es geht darum, dass auf einem Klassenkonto eingehende Überweisungen anhand des Verwendungszwecks einem Schüler mit dessen Schüler-Nr. zugeordnet wird. Ich kann die Eingabe daher nicht über das Eingabeformular regulieren.

Content-Key: 7596499639

Url: https://administrator.de/contentid/7596499639

Printed on: April 30, 2024 at 09:04 o'clock

Member: Tezzla
Tezzla Jun 20, 2023 at 20:54:25 (UTC)
Goto Top
Moin

 [^0-9]+ 

Gibt dir alle Zahlen zurück.
Die kannst du zB dann noch trimmen und zurück in die gewünschte Form bringen (splitten). Im Anschluss dann vergleichen.

Hilft das?
Mitglied: 7426148943
Solution 7426148943 Jun 20, 2023 updated at 22:16:20 (UTC)
Goto Top
Nimm preg_replace, alles was nicht eine Zahl ist ersetzen durch nichts, fertig ist die Soße ...
$number = preg_replace('/[^\d]/','','A123 - 456X');  
https://tio.run/##K8go@P/fxr4go4ArNTkjX6GgKDU9vii1ICcxOVVDXT86LiYlVl9dRx ...

Zeppel
Member: Marcus-42
Marcus-42 Jun 21, 2023 at 02:58:40 (UTC)
Goto Top
Danke!