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-ID: 7596499639

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

Ausgedruckt am: 21.11.2024 um 19:11 Uhr

Tezzla
Tezzla 20.06.2023 um 22:54:25 Uhr
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?
7426148943
Lösung 7426148943 20.06.2023, aktualisiert am 21.06.2023 um 00:16:20 Uhr
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
Marcus-42
Marcus-42 21.06.2023 um 04:58:40 Uhr
Goto Top
Danke!