Zur Navigation

String per PHP zerteilen

Trennung Sraßenname und Hausnummer

1 Horst_Braun

Hallo,

bei mir geben alle die Adressen so an:
1.Bsp: Teststraße 12
2.Bsp. Teststraße12
3.Bsp. Teststraße 12b

Ich benötige von diesem String lediglich die Hausnummer.

Gibt es da eine einfache Lösung? Vielleicht über preg_match oder explode?

Vielen Dank schonmal.

MfG

13.01.2013 21:23

2 Jörg Kruse

Mit explode() geht's nicht, da du keinen eindeutigen Trenner hast. Mit preg_match() sollte es aber gehen:

$address = 'Teststraße12a';

preg_match('/([1-9][0-9]*[a-z]*)$/', $address, $matches);

echo $matches[1];

13.01.2013 21:39

3 Horst_Braun

Super. Geht 1A.

wie bekomme ich dann nur den Straßenteil?

Vielen Dank.

13.01.2013 22:16

4 Jörg Kruse

Mit zwei geklammerten Ausdrücken:

preg_match('/^(.+)([1-9][0-9]*[a-z]*)$/', $address, $matches);
$street = $matches[1];
$street_number = $matches[2];

13.01.2013 22:24

5 Horst_Braun

Das geht nicht mehr.

Jetzt macht er aus:
Teststraße 12a

Teststraße1 und 2a

13.01.2013 22:34

6 Jörg Kruse

Der erste Ausdruck ist zu "gierig". Probier's mal mit einem Ungreedy-Flag:

preg_match('/^(.+)([1-9][0-9]*[a-z]*)$/U', $address, $matches);

13.01.2013 22:43

7 Horst_Braun

Jetzt sind beide Ausdrücke leer.

Der erste ganz oben hat super mit der Hausnummer geklappt.

13.01.2013 22:51 | geändert: 13.01.2013 22:52

8 Jörg Kruse

Bei mir funktioniert der Regex. Wie schaut der relevante Code bei dir aus?

13.01.2013 23:02

9 Horst_Braun

Oh. Hab vergessen die Variable zu ändern.

Geht traumhaft.

Danke. Super schnelle Unterstützung.

13.01.2013 23:11

... 1 Monat später ...

10 Horst_Braun

Folgende Strings machen Probleme:

z.B.
Königstr.58
Bahnhofsplatz 22-24

Kann man da noch was am Ausdruck ändern?

Vielen Dank.

19.02.2013 13:38